class类中常成员函数和mutable类型变量的问题,求指点!
#include<iostream>
using namespace std;
class point
{
private:
//int a,b,c;
mutable int a,b,c;
public:
point(int x,int y,int z)
{
this->a=x;
this->b=y;
this->c=z;
}
const point& set(int x,int y,int z) const
{
a=x;
b=y;
c=z;
return *this;
}
void pri()
{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
}
};
int main()
{
point p(0,0,0);
p.set(1,2,3);
p.pri();
return 0;
}
我把main中的p.set(1,2,3) p.pri();和合成一起写成p.set(1,2,3).pri(),老是提示这个错误,
error C2662: 'pri' : cannot convert 'this' pointer from 'const class point' to 'class point &'
为什么分开写机可以,还有就是const point& set(int x,int y,int z) const
这个函数前面的const去掉一会出错,为什么?求指点谢谢!
[解决办法]
>>有就是const point& set(int x,int y,int z) const 这个函数前面的const去掉一会出错,为什么?
因为 set 是 const 函数,其隐含对象是 const 的,所以想 return*this; 返回类型进必须是 const point&.
>>我把main中的p.set(1,2,3) p.pri();和合成一起写成p.set(1,2,3).pri(),老是提示这个错误
把 pri 改成 void pri () const 就好了。原因是 set 返回 const point&,后者不能调用非 const 成员函数。