gpt4 book ai didi

C++ 运算符重载和继承

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:37 25 4
gpt4 key购买 nike

所以我创建了一个通用 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).

最佳答案

你正在咬最令人烦恼的解析。这是导致声明函数而不是对象的语法错误。

关于C++ 运算符重载和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com