我有一个这样的课程:
class MyClass
{
const int GetValue()
{
return 2;
}
}
我将它传递给这样的函数:
void Test(const MyClass &myClass)
{
int x=myClass.GetValue();
}
但是我收到了这个错误:
The object has type qualifiers that are not compatible with member function Object type is const MyClass
我知道如果我定义这样的函数:
void Test( MyClass &myClass)
但我想知道为什么添加const会产生这样的错误?
答案 0 :(得分:8)
您需要创建成员函数const
,而不是返回类型:
int GetValue() const;
这使得可以在const
实例(或通过const
引用或指针)上调用此成员。
注意:当您按值返回时,返回的东西的常量与返回它的对象的常量分离。实际上,您不太可能希望返回类型为const
。
答案 1 :(得分:1)
将int设置为const,尝试将方法设为const:
const int GetValue() const
{
return 2;
}
答案 2 :(得分:1)
有两个问题,一个可见性问题(你的const int GetValue()
函数自私有后是不可见的)以及你正在调用非const函数(它可以对具有它的对象执行修改)成员函数)
const int GetValue()
从对类的持续引用
const MyClass &myClass
你基本上要求“这个对象不会被修改,反正让我调用一个不保证这个的函数”。
你没有连贯。