const到非const的编译异常,看不出来代码错哪了
const到非const的编译错误,看不出来代码哪里错了
下面这段代码在VC2005里面编译有错误。问题是,在函数f里面没有任何需要const_cast的地方啊,大侠解释一下!
编译输出:
math.cpp(14) : error C2662: 'container::GetObject' : cannot convert 'this' pointer from 'const container' to 'container &'
--
------解决方案--------------------
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成员函数
------解决方案--------------------
------解决方案--------------------
+1
------解决方案--------------------
const object& GetObject(){return m_o;}
這個改成const object& GetObject() const {return m_o;}
或用const_cast去掉const屬性
const object& o= (const_cast<Container*>(c))->GetObject();
下面这段代码在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;}
------解决方案--------------------
------解决方案--------------------
你这个结构体变量使用有问题吧。你把后面用到的object都换成 struct object 试试,或者定义
typedef struct
{
int a;
int b;
object(){a=0;b=0;}
} object; 再按照你的方法使用object
------解决方案--------------------
如果object是关键字,换个变量名再用我上面说的方法试试
------解决方案--------------------
返回常引用必须将函数定义为const成员函数
------解决方案--------------------
------解决方案--------------------
+1
------解决方案--------------------
const object& GetObject(){return m_o;}
這個改成const object& GetObject() const {return m_o;}
或用const_cast去掉const屬性
const object& o= (const_cast<Container*>(c))->GetObject();