我有一个通用的矩阵类,其中包含以下运算符重载:
class Matrix
{
public:
Matrix() {}
Matrix(int i, int j, int k) {}
Matrix operator*(const Matrix &right)
{
}
};
我还有一个矩阵2类,它继承自我的矩阵类。
class Matrix2 : public Matrix
{
};
当我尝试将两个Matrix2对象相乘时,我收到一个编译器错误,指出:“没有找到接受类型为Matrix2的左操作数的运算符(或者没有可访问的转换)”。这是为什么?如何正确地实现继承中的运算符重载?
编辑:正如所指出的那样,我的问题部分原因是“最烦人的解析”。现在,我相信我的问题严格涉及运算符重载和继承。我可以很好地将两个Matrix对象相乘,但我不能将两个Matrix2对象相乘。
Matrix2 i;
Matrix2 m;
Matrix result = m * i;
错误消息:
错误 C2678:二进制“*”:没有找到接受左操作数类型为“Matrix2”的运算符(或不存在可接受的转换)。
Matrix Matrix::operator*(const Matrix &right){}
,以便使此运算符重载正常工作。 - Steztricoperator*
的实现是什么?哪一行出错了? - Kaiged