这是这个简单的代码
#include <map>
class MyMap : public std::multimap<int*, int*>
{
public:
void foo(const int* bar) const
{
equal_range(bar);
}
};
int main()
{
MyMap myMap;
int number;
myMap.foo(&number);
return 0;
}
它不编译,并给出以下错误
error C2663: 'std::_Tree<_Traits>::equal_range' : 2 overloads have no legal conversion for 'this' pointer
我看过很多关于这个错误的话题,似乎这是一个const
问题。如果我foo(const int* bar)
变成foo(int* bar)
.
问题是,我看不到foo
内容应该如何改变我的 MyMap 对象。std::multimap
提出一个 const 版本equal_range
:
http://www.cplusplus.com/reference/map/multimap/equal_range/
我的问题是什么?
谢谢