编译器检测到了const,该怎么处理

编译器检测到了const一个成员函数式const函数, 该类有个成员是:map容器(stl里的), 我在这个成员函数里如此

编译器检测到了const
一个成员函数式const函数, 

该类有个成员是:map容器(stl里的), 我在这个成员函数里如此使用:

mymap.insert(make_pair(pSE->m_strName,pSE));


居然无法编译过去了。 提示与const相关。 

编译器是如何做到,检测到 insert函数会修改成员对象 mymap? 


[解决办法]
它不是检测你函数修改了对象, 而是检测你的 insert 没有声明为 const
[解决办法]

引用:
Quote: 引用:

它不是检测你函数修改了对象, 而是检测你的 insert 没有声明为 const


你的意思是否是说
const成员函数,如果调用非成员函数,不管 这个被调用的函数 的参数 是否是指针或者引用,

编译器都会报错!


如果const调用const吗,那么就不会错!!!



const成员函数,如果调用非成员函数, -> const成员函数,如果调用非 const 成员函数,

是的

[解决办法]

mymap.insert(make_pair(pSE->m_strName,pSE));
//隐含了this(const的)
//所以this->mymap也是const
//所以不能调用insert

[解决办法]
const成员函数确保了此成员函数不改变成员变量的值,所以成员函数要调用其他的成员函数也要保证不能改变成员变量的值,也就是说需要是const函数