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)。則順利通過編譯。
