我有一个抽象类,它有两个派生类。我试图在基类中重载operator+,这样我就可以像这样进行操作:derivedClass=derivedClass+differentDerivedClass:
class iMatrix{
iMatrix operator+(const iMatrix& obj)
}
class UsualMatrix : public iMatrix
class SparseMatrix : public iMatrix
在main函数内部,我想要进行以下操作:
SparseMatrix a, b;
UsualMatrix c=a+b;
我有拷贝构造函数和其他可能有用的东西。现在,如果我像这样创建函数:
iMatrix operator+(const iMatrix& obj)
编译器(Xcode中的LLVM)显示“返回类型'iMatrix'是抽象类”,但理论上其他所有内容都应该正常工作。我已经阅读了手册和其他StackOverflow线程,所以我尝试了这个:
iMatrix& operator+(const iMatrix& obj)
而一个函数本身会“将obj添加到this”并返回*this。问题在于当我执行c=a+b时,a变成了等于c,但它本不应该改变。
a=
1 1
1 1
b=
1 1
1 1
a+b=c;
c=
2 2
2 2
b=
1 1
1 1
a=
2 2
2 2
我该怎么办?加法和乘法必须在基类中实现,但我不知道如何修复此错误。 非常感谢您的任何建议。