当在类中声明并定义了一个普通的公共成员函数,在主函数里定义了一个此类的常对象,如果试图使常对象调用非”常成员函数“就会产生如标题所说的:
error: 不能讲this指针从"const classtype" 转换为 "classtype &"。
解决方案是将成员函数定义为常成员函数(常成员函数保证调用此函数的对象不会被改变):
class MyClass
{
public:
void foo(void) const;
// else
};
在之后的函数定义中也要加上const关键字
void MyClass::foo(void) const
{
// do something
}
如果函数体内会对对象作出改变,也就不应该使用常对象来调用。
最后又一个疑问:为什么error提示不能转换为"classtype &"而不只是"classtype"呢?