由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - operator() overloading 一问
相关主题
question overloading ++ errorHow to initialize object in constructor?
C++ operator = overloading用copy & swap有啥优点why copy assignment operator returns non-const type?
c++ 一问为什么在overloading中,friend <<不能读取private值呢?
一个关于assignment constructor和expection的问题c++问题,请高人指点迷津,c++ faq lite的一个例子
Is the order of initialization a, b, c or c, b, a?Q on overloaded assignment vs copy constructor.
why use static function here?为啥gcc找不到类的构造函数?
问个overloading new operator的问题一个c++小问题
请问关于overloading <<问个c++的template的问题
相关话题的讨论汇总
话题: int话题: ilen话题: jlen话题: point话题: velocity
进入Programming版参与讨论
1 (共1页)
n*****e
发帖数: 17
1
初学c++
请问编译器是如何分辨以下两个()的,这么写会有潜在的问题吗?
code如下:
class Point {
public:
Point(int, int);
double& operator()(int,int);
.......
protected:
int _ilen, _jlen;
double** _value;
};
Point::Point(int ilen, int jlen) {
_ilen=ilen;
_jlen=jlen;
_value=new double*[_ilen+2];
for(int i=0; i<=_ilen+1; i++) {
*(_value+i)=new double[_jlen+2];
for(int j=0; j<=_jlen+1; j++)
_value[i][j]=0;
}
}
double& Point::operator()(int i, int j) {
assert
t****t
发帖数: 6806
2
你自己想想这两个分别用什么语法调用, 再想想你自己会不会把它们搞混, 你就知道编
译器会不会搞混了

【在 n*****e 的大作中提到】
: 初学c++
: 请问编译器是如何分辨以下两个()的,这么写会有潜在的问题吗?
: code如下:
: class Point {
: public:
: Point(int, int);
: double& operator()(int,int);
: .......
: protected:
: int _ilen, _jlen;

n*****e
发帖数: 17
3
我知道operator overloading 是不能参数一样的
可是这里有一个是constructor,所以不知道会不会有特别
我写了一个test program,好像没有问题,可是程序复杂了,好像有问题,很奇怪
如果要实现这样的两维数组想表示成p(i,j)或者别的某种形式,怎么做比较好?请大侠
帮忙!
test program 如下:
#include
#include "Point.h"
using namespace std;
int main() {
Point pt(2,2);
pt(1,1)=1.;
cout<<"pt[1][1]= "< cout<<"pt[0][0]= "< return 0;
}
先是结果为:
pt[1][1]=1
pt[0][0]=0

【在 t****t 的大作中提到】
: 你自己想想这两个分别用什么语法调用, 再想想你自己会不会把它们搞混, 你就知道编
: 译器会不会搞混了

t****t
发帖数: 6806
4
这结果不是挺对的吗?

【在 n*****e 的大作中提到】
: 我知道operator overloading 是不能参数一样的
: 可是这里有一个是constructor,所以不知道会不会有特别
: 我写了一个test program,好像没有问题,可是程序复杂了,好像有问题,很奇怪
: 如果要实现这样的两维数组想表示成p(i,j)或者别的某种形式,怎么做比较好?请大侠
: 帮忙!
: test program 如下:
: #include
: #include "Point.h"
: using namespace std;
: int main() {

n*****e
发帖数: 17
5
下面的就有问题了,这里Vx,Vy和我前面的Point class是一样的,除了维数不一样
错误是:在_x(_ilen,_jlen), no matching function for call to Vx::Vx()
以及下面所有的关于_x,_y的constructor, copy constructor都有同样的错,我有参数
输入的,编译器却去调用我没有定义的default constructor,不知道为什么?
#include "Vx.h"
#include "Vy.h"
class Velocity {
private:
int _ilen, _jlen;
Vx _x;
Vy _y;
public:
Velocity(int, int);
Velocity(int, int, const Vx&,const Vy&);
Velocity(const Velocity&);
。。。。。。
}
Velocity::Velocity(int i, int j) {
_ilen=i;
_jlen=j;
_x(_ilen,_jl

【在 t****t 的大作中提到】
: 这结果不是挺对的吗?
t****n
发帖数: 15
6
Put the initialization of _x, _y in the initialization list.

【在 n*****e 的大作中提到】
: 下面的就有问题了,这里Vx,Vy和我前面的Point class是一样的,除了维数不一样
: 错误是:在_x(_ilen,_jlen), no matching function for call to Vx::Vx()
: 以及下面所有的关于_x,_y的constructor, copy constructor都有同样的错,我有参数
: 输入的,编译器却去调用我没有定义的default constructor,不知道为什么?
: #include "Vx.h"
: #include "Vy.h"
: class Velocity {
: private:
: int _ilen, _jlen;
: Vx _x;

P*****f
发帖数: 2272
7
类成员变量初始化放在构造函数的initilization list
里面。在构造函数体内部,这些类成员变量已经构造完毕。

下面的就有问题了,这里Vx,Vy和我前面的Point class是一样的,除了维数不一样
错误是:在_x(_ilen,_jlen), no matching function for call to Vx::Vx()
以及下面所有的关于_x,_y的constructor, copy constructor都有同样的错,我有参数
输入的,编译器却去调用我没有定义的default constructor,不知道为什么?
#include "Vx.h"
#include "Vy.h"
class Velocity {
private:
int _ilen, _jlen;
Vx _x;
Vy _y;
public:
Velocity(int, int);
Velocity(int, int, const Vx&,const Vy&);
Velocity(const Velocity&);
。。。。。。
}
Velocity::Ve

【在 n*****e 的大作中提到】
: 下面的就有问题了,这里Vx,Vy和我前面的Point class是一样的,除了维数不一样
: 错误是:在_x(_ilen,_jlen), no matching function for call to Vx::Vx()
: 以及下面所有的关于_x,_y的constructor, copy constructor都有同样的错,我有参数
: 输入的,编译器却去调用我没有定义的default constructor,不知道为什么?
: #include "Vx.h"
: #include "Vy.h"
: class Velocity {
: private:
: int _ilen, _jlen;
: Vx _x;

n*****e
发帖数: 17
8
弄清楚了,谢谢你和TopGun,还有thrust!

【在 P*****f 的大作中提到】
: 类成员变量初始化放在构造函数的initilization list
: 里面。在构造函数体内部,这些类成员变量已经构造完毕。
:
: 下面的就有问题了,这里Vx,Vy和我前面的Point class是一样的,除了维数不一样
: 错误是:在_x(_ilen,_jlen), no matching function for call to Vx::Vx()
: 以及下面所有的关于_x,_y的constructor, copy constructor都有同样的错,我有参数
: 输入的,编译器却去调用我没有定义的default constructor,不知道为什么?
: #include "Vx.h"
: #include "Vy.h"
: class Velocity {

t****t
发帖数: 6806
9
连我名字都没拼对, 太没礼貌了...

【在 n*****e 的大作中提到】
: 弄清楚了,谢谢你和TopGun,还有thrust!
n*****e
发帖数: 17
10
sorry, 已改正

【在 t****t 的大作中提到】
: 连我名字都没拼对, 太没礼貌了...
1 (共1页)
进入Programming版参与讨论
相关主题
问个c++的template的问题Is the order of initialization a, b, c or c, b, a?
这个类的default constructor怎么写why use static function here?
question about c++ constructor问个overloading new operator的问题
string operator +请问关于overloading <<
question overloading ++ errorHow to initialize object in constructor?
C++ operator = overloading用copy & swap有啥优点why copy assignment operator returns non-const type?
c++ 一问为什么在overloading中,friend <<不能读取private值呢?
一个关于assignment constructor和expection的问题c++问题,请高人指点迷津,c++ faq lite的一个例子
相关话题的讨论汇总
话题: int话题: ilen话题: jlen话题: point话题: velocity