重载+运算符,以便能够使用对象的3个const实例

Mar*_*cek 0 c++ operator-overloading

我在为我的CMatrix类中的const实例定义重载的operator +时遇到了麻烦.我有这个定义为 + operator尚未 CMatrix operator+(const CMatrix &matrix) const;

它适用于non-constCMatrix的实例.但我做不到这样的事情:

const CMatrix a;
const CMatrix b;
const CMatrix c;
a=b+c;
Run Code Online (Sandbox Code Playgroud)

我在尝试编译源代码时遇到此错误: error: passing ‘const CMatrix’ as ‘this’ argument of ‘CMatrix& CMatrix::operator=(const CMatrix&)’ discards qualifiers

任何人都可以告诉我,如何定义重载以便+ operator能够编译代码?

Jos*_*eld 6

这与你没有任何关系operator+.这是因为您尝试分配a即使您将其声明为const.你显然无法分配给一个const对象,因为这会改变它的价值!

也许你想要这样做:

const CMatrix a = b + c;
Run Code Online (Sandbox Code Playgroud)

或者做aconst.