所以,我有我創建了具有以下運算符重載的通用矩陣類:C++運算符重載和繼承
class Matrix
{
public:
Matrix() {}
Matrix(int i, int j, int k) {}
Matrix operator*(const Matrix &right)
{
}
};
我也有,從我的矩陣類繼承的矩陣2類。
class Matrix2 : public Matrix
{
};
當我嘗試乘兩個矩陣2的對象在一起,我得到一個編譯器錯誤,指出:
「沒有運營商發現,這需要類型矩陣2的左手操作數(或沒有訪問的變換) '
這是爲什麼,我該如何正確實現帶繼承的操作符重載?
編輯:
正如指出我的問題是部分原因是因爲「最棘手的解析」的。現在我的問題,我相信,嚴格地與操作符重載和繼承有關。
我可以將兩個Matrix對象相乘,但我無法將兩個Matrix2對象放在一起。
Matrix2 i;
Matrix2 m;
Matrix result = m * i;
錯誤消息:
error C2678: binary '*' : no operator found which takes a left-hand operand of type 'Matrix2' (or there is no acceptable conversion).
這只是一個猜測,但是您可以嘗試在超載聲明之前添加一個「public」修飾符 – 2012-08-08 20:36:26
運算符重載位於Matrix類的公共部分。 – Bob 2012-08-08 20:38:20
在所有情況下,一個完整的最小可編譯示例,使其他人能夠遇到同樣的錯誤,你做的是有用的。 – PlasmaHH 2012-08-08 20:38:51