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

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