所以,我有我创建了具有以下运算符重载的通用矩阵类: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