[英]Operator+ overloading return value to Operator=
我試圖將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;
}
}
救命? 謝謝!
你不會返回對result
的引用。 result
是局部變量,退出方法時超出范圍。 您很可能想要返回result
的副本,因此請更改您的運算符返回類型:
VecXd operator+(const VecXd& rhs) const
這將返回VecXd
類型的值,而不是引用。
哦,既然你正在實現+運算符,而不是+ =運算符,你可能想要改變它:
vecArr[i] += rhs.vecArr[i];
對此:
result.vecArr[i] = vecArr[i] + rhs.vecArr[i];
並且可能不需要使用*this
初始化result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.