C++異常:no matching function for call to "Matrix(Matrix&)"


C++異常:no matching function for call to "Matrix(Matrix&)"

 

我定義了一個類叫Matrix,其中構造函數explicit Matrix(const Matrix& source);

也寫了一個方法:

Matrix Matrix::myFun(const Matrix &source)
{
  ...

    return *this;
}

編譯報出上面的異常來,原因是explicit關鍵字抑制隱式轉換,當我返回*this的時候相當於:Matrix myMatrix = *this,由於禁止隱式轉換,所以這個是報錯的。

當我刪掉explicit關鍵字后,發生了隱式轉換:Matrix tmp(*this),然后調用編譯器提供的默認復制構造函數Matrix myMatrix(tmp)。則順利通過編譯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM