这是我的主要功能:
int main(){
Complex c1(1.0, 5.0);
Complex c2(3.0,-2.0);
Complex c3(1.0, 2.0);
cout << "c1 + c2 + c3 = "
<< c1 + c2 + c3 << endl;
return 0;
}
这是我用来添加所需数字的功能
Complex& operator+(const Complex & x, const Complex & y){
Complex c;
c.a = x.a + y.a;
c.b = x.b + y.b;
return c;
}
a
和b
是我班级中的私有双变量。
在运行我的程序时,我似乎得到输出为1 + 2i即(c3),当我只添加2个对象时,它似乎只能正常工作。有什么方法可以调整我现有的代码,使其能够用于最多n个术语吗?
答案 0 :(得分:3)
您的operator +
会返回对本地变量c
的引用,该变量在完成后会被销毁。对结果的任何进一步使用都会导致未定义的行为。
您需要返回值,以便复制(或rvalue
),而不是引用:
Complex operator+(const Complex & x, const Complex & y)
{...}