キーが unsigned int で、値がコンストラクターが次のクラスである C++ の STL マップがあります。
Foo::Foo(unsigned int integerValue){
//Some stuff
}
他のクラスでは、ヘッダーで std::map を宣言しました。
private:
std::map<unsigned int, Foo> *m_mapFoo;
そして、cpp ファイルで、私はそれを作成し、Foo のインスタンスを挿入しました:
m_mapFoo = new std::map<unsigned int, Foo>;
m_mapFoo->insert(0, new Foo(0));
m_mapFoo->insert(1, new Foo(1));
しかし、挿入メソッドで次のエラーが発生します。
no matching function for call to ‘std::map<unsigned int, Foo, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, Foo> > >::insert(const unsigned int&, Foo*)’
find メソッドでの同様の問題:
m_mapFoo.find(0)->second->someFunctionIntoFooClass();
エラーは正確には次のとおりです。
request for member ‘find’ in ‘((Foo*)this)->Foo::m_mapGeoDataProcess’, which is of non-class type ‘std::map<unsigned int, Foo, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, Foo> > >*’
追加メモ: Foo コピー コンストラクターはありませんが、それが問題だとは思いません。
このエラーを理解するのに役立ちますか?