c++ - '返回' : cannot convert from 'const class myClass' to 'class myClass &'

标签 c++ operator-overloading

我在 .h 文件中的函数原型(prototype)为:

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 有点困惑,我根本无法纠正。有人知道如何解决这里的错误吗?

提前致谢!

最佳答案

问题是您要从显式声明为 const 的成员函数返回对对象的引用

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

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

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

关于c++ - '返回' : cannot convert from 'const class myClass' to 'class myClass &' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005612/

相关文章:

c# - 如何从 .vcxproj 文件中获取所有项目宏及其值

c++ - 如何为具有 2 个变量的对象重载 C++ 中的增量运算符?

c++ - 将 setfill 和 setw 的输出存储到字符串

c++ - 为什么 Mac 上的 clang 会自动包含一些缺失的 header ?

c++ - 两个整数双端队列的乘法奇怪的错误

c# - 为什么 C# 编译器使用隐式运算符返回的值的父类型来调用重载运算符

C++ 对构造函数的模糊调用

c++ - 命名空间 + 重载 std::ostream << 运算符

c++ - 如何在 vector::clear() 上保留 vector 元素的容量?

c++ - QT运行SAPI报错