簡體   English   中英

運算符+重載返回值為Operator =

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM