为什么下面的cpp程序会编译出错?
我希望调用fun时,其中的obj不被改变。部分程序如下:
a.h中声明如下:
class otherclass
{
...
int fun(const myclass& obj);
...
};
a.cpp中实现为:
int otherclass::fun(const myclass& obj)
{
...
int num = obj.GetValueA(); (此行编译出错)
...
}
myclass类中定义的成员函数GetValueA()为
int myclass::GetValueA()
{
return ret;
}
myclass类声明为
class myclass
{
public:
int GetValueA();
private:
int ret;
};
在Linux下编译:
g++ -c -Wall a.cpp
错误信息为:
passing `const myclass' as `this' argument of `int
myclass::GetValueA ()' discards qualifiers
但将a.h,a.cpp中相应的const去掉,则编译通过。