我试着编译时收到此错误信息以下'std :: list <_Ty> :: push_back':无法将'this'指针从'const std :: list <_Ty>'转换为'std :: list <_Ty>''
void MyClass::MyFunc() const
{
int i= 0;
myList.push_back(i);
}
我已经吃过的常量,增加了功能,尽管它返回void
,修复与功能本身的调用一个相同的问题,但现在,它的使用STL的成员发生,我在想我的代码是非常错误的。作为参考,误差
cannot convert 'this' pointer from 'const MyClass' to 'MyClass &'
其实我有,因为我继承了这个从别人与编码标准和最佳做法的一个非常滥用的关系发生了什么事情的很少的想法。如果有人能告诉我这个问题是什么问题,我应该在代码中寻找什么,这对我有很大的帮助。
你不能将一个成员func标记为“只读”,然后期望它写入没有问题。 http://msdn.microsoft.com/en-us/library/6ke686zh(v=vs.110).aspx 另外,请注意“const int Func()”和“int Func()const”之间的区别。 – Gaminic
这里有一些关于'const'的含义的误解:_I已经必须将const添加到函数中,尽管它返回void_。 'const'与函数返回的内容无关(除非它返回一个指向成员的指针/引用)。你应该看看原来的错误(你在添加'const'之前得到的那个错误),并试图理解为什么你调用MyFunc()的对象是一个常量对象。 – jogojapan