所以我有一个我创建的通用 Matrix 类,它具有以下运算符重载:
class Matrix
{
public:
Matrix() {}
Matrix(int i, int j, int k) {}
Matrix operator*(const Matrix &right)
{
}
};
我还有一个继承自我的 Matrix 类的 Matrix2 类。
class Matrix2 : public Matrix
{
};
当我尝试将两个 Matrix2 对象相乘时,我得到一个编译器错误说明:
'没有找到采用 Matrix2 类型的左手操作数的运算符(或没有可访问的转换)'
为什么会这样,我如何才能通过继承正确实现运算符重载?
编辑:
正如所指出的,我的问题部分是因为“最令人烦恼的解析”。现在我的问题,我相信,严格与运算符重载和继承有关。
我可以很好地将两个 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).