これがこの簡単なコードです
#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/
私の問題は何ですか?
ありがとうございました