1
我想補充兩個班的內容,並將它們保存在其他類手術後分配對象。我創建了構造函數,參數化構造函數,析構函數和超載參數=
。它工作正常進行Demo b = a;
但是當我嘗試保存由a.addition(b)
給出的對象,有錯誤no viable overloaded '='
。我的理念是爲什麼對象沒有被複制到新創建的對象?通過操作
類演示
class Demo
{
int* ptr;
public:
Demo(int data = 0) {
this->ptr = new int(data);
}
~Demo(void) {
delete this->ptr;
}
// Copy controctor
Demo(Demo &x) {
ptr = new int;
*ptr = *(x.ptr);
}
void setData(int data) {
*(this->ptr) = data;
}
int getData() {
return *(this->ptr);
}
Demo operator = (Demo& obj) {
Demo result;
obj.setData(this->getData());
return result;
}
Demo addition(Demo& d) {
Demo result;
cout << "result: " << &result << endl;
int a = this->getData() + d.getData();
result.setData(a);
return result;
}
};
主
int main(void)
{
Demo a(10);
Demo b = a;
Demo c;
c = a.addition(b); // error here
return 0;
}
您的賦值運算符很奇怪。它改變* rhs *而不是* lhs *。如果我寫'a = b',我不希望b被修改。 – StoryTeller
@StoryTeller你是對的。那是錯誤的。 –