所以我创建了一个通用的 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;
错误信息:
最佳答案
你正在咬最烦人的解析。这是导致声明函数而不是对象的语法错误。
关于C++ 运算符重载和继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11872724/