C++ const class reference作形参注意的地方
Aug 16, 2012今天在写c++代码时,遇到如下的编译错误
Error:Can not convert 'this' pointer to 'const class XXX'
多次查看代码后,都没发现什么错误,后来在这里发现错误的原因。
为了说明的方便,引用一段Error代码:
|
|
出错的地方就是在test函数调用get_num函数地方里。
错误原因:test函数接收的函数形参是const A&
, 即class A的const引用,
而在test函数体中调用了class A中的get_num
方法。
在C++中,对于const的对象,不能够调用对象的非const函数(理由很简单, const对象意味这对象里面的所有成员都不能够被修改,如果你调用对象中的一个方法,这个方法修改了对象里面某个成员,那么就会造成矛盾)
错误解决也很简单,有两种:
- 把
get_num
函数用const修饰(get_num
函数就不会修改class A的成员) - 把test函数的形参从const A&改成A&,即把const去掉