首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

const到非const的编译异常,看不出来代码错哪了

2012-02-15 
const到非const的编译错误,看不出来代码哪里错了下面这段代码在VC2005里面编译有错误。问题是,在函数f里面

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();

热点排行