我正在尝试将operator +的结果返回给operator =但是在operator =中返回* this时会出现假值;当调用rhs并访问其函数时,值是正确的,但是operator =不发送类的副本错误吗?
VecXd& operator=(const VecXd &rhs)
{
cout << rhs.vecArr[0] << " " << rhs.vecArr[1] << " " << rhs.vecArr[2] << " " << endl;
return *this;
}
VecXd& operator+(const VecXd& rhs){
VecXd& result = *this;
cout << "TEST FOR DIMENSION-> " << dimension << endl;
if(result.dimension == rhs.dimension) //dimension level check
{
for(int i = 0; i < rhs.dimension; i++)
{
result.vecArr[i] += rhs.vecArr[i];
cout << result.vecArr[i] << " our new value" << endl;
}
cout << result << " result test!" << endl;
return result;
}
else{
cout << "Dimensions do not match!!! Error!" << endl;
}
}
帮助?谢谢!
答案 0 :(得分:2)
你不要回复result
的引用。 result
是一个局部变量,退出方法时超出范围。您很可能希望返回result
的副本,因此请更改运算符返回类型:
VecXd operator+(const VecXd& rhs) const
这将返回VecXd
类型的值,而不是引用。
哦,既然你正在实现+运算符,而不是+ =运算符,你可能想要改变它:
vecArr[i] += rhs.vecArr[i];
也是这样:
result.vecArr[i] = vecArr[i] + rhs.vecArr[i];
并且可能无需使用result
*this