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 的大作中提到】 : 连我名字都没拼对, 太没礼貌了...
|
|