读书人

const到非const的编译异常看不出来代

发布时间: 2012-02-15 12:09:44 作者: rapoo

const到非const的编译错误,看不出来代码哪里错了
下面这段代码在VC2005里面编译有错误。问题是,在函数f里面没有任何需要const_cast的地方啊,大侠解释一下!

C/C++ code
struct object {      int a;      int b;      object(){a=0;b=0;} };   class container{      object m_o; public:      const object& GetObject(){return m_o;} };   void f(const container& c) {      const object& o=c.GetObject(); } 


编译输出:
math.cpp(14) : error C2662: 'container::GetObject' : cannot convert 'this' pointer from 'const container' to 'container &'
--


[解决办法]
const object& GetObject()const//这个const
{return m_o;}

[解决办法]
探讨
const object& GetObject()const//这个const
{return m_o;}

[解决办法]
你这个结构体变量使用有问题吧。你把后面用到的object都换成 struct object 试试,或者定义
typedef struct
{
int a;
int b;
object(){a=0;b=0;}

} object; 再按照你的方法使用object
[解决办法]
如果object是关键字,换个变量名再用我上面说的方法试试
[解决办法]
返回常引用必须将函数定义为const成员函数
[解决办法]
探讨
返回常引用必须将函数定义为const成员函数

[解决办法]
+1
探讨

你这个结构体变量使用有问题吧。你把后面用到的object都换成 struct object 试试,或者定义
typedef struct
{
int a;
int b;
object(){a=0;b=0;}

} object; 再按照你的方法使用object

[解决办法]
const object& GetObject(){return m_o;}
改成const object& GetObject() const {return m_o;}

或用const_cast去掉const性
const object& o= (const_cast<Container*>(c))->GetObject();

读书人网 >C++

热点推荐