'return':无法从'const class myClass'转换为'class myClass&'

时间:2018-06-23 22:40:24

标签: c++ operator-overloading

.h文件中的函数原型为:

myClass & operator+ (const myClass & myClassInst) const;

以及.cpp文件中的实现:

myClass& myClass::operator+ (const myClass &myClassInst) const
{
    return *this;
}  

但是,当我编译时,会收到以下消息:

error C2440: 'return' : cannot convert from 'const class myClass' to 'class 
myClass &' 

我对* this有点困惑,我根本无法使事情变得正确。有人知道如何在这里解决错误吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是您要从成员函数返回引用,而该成员函数已明确声明为 const

const成员函数保证不会修改您的对象及其属性(除非将其声明为mutable)。

通过返回对此(* this)的引用,函数的调用者可以自由更改对象,这将破坏const成员函数的保修。

因此,要么使您的成员函数成为非常量,要么不返回引用。