读书人

C++成员指针没法赋值

发布时间: 2013-01-21 10:15:38 作者: rapoo

C++成员指针无法赋值


class Image{

public:
int* getA(){return a;}
Image& operator=(const Image&r);


private:
int* a;
}

Image& operator=(const Image&r){
a = new int;
*a = 23;
}


void main(){
Image lena("lena.bmp");

Image lena1 = lena;
int* b = lena1.getA();
cout << *b;
}




这是部分代码,运行后,指针b无法赋值啊,为什么呢?
[解决办法]
引用:
Image lena1 = lena;这一句其实没有调用你写的重载赋值操作符函数,它直接初始化了。
分成两句试试
Image lena1;
lena1 = lena;

Image lena1 = lena;这一句直接调用复制构造函数,你贴出来的代码里没有。
[解决办法]

class Image
{
public:
int* getA(){return a;}
Image& operator=(const Image&r);
private:
int* a;
};

Image& Image::operator=( const Image&r )
{
a = new int;
*a = 23;
return *this;
}

void main(){
Image lena;
Image lena1 ;
lena1= lena;
int* b = lena1.getA();
std::cout << *b;
}

读书人网 >C++

热点推荐