0

この問題は、boost::shared_ptrs をキー値として使用したことが原因である可能性があると思います。

//header file:
#include <map>
std::map<boost::shared_ptr<foo>, bar> myMap; // Private member variable

//////////
myMap.insert(pair);
//////////
myMap.clear()

foo も bar も抽象クラスではありません。その時点で、実行時に「純粋仮想メソッドが呼び出されました」というエラーが表示され、プログラムが終了します。また、マップを反復処理して myMap.erase(iterator) を使用しようとしましたが、同じエラーが発生しました。

4

1 に答える 1

1

bar が多相型の場合、クラスをスライスすることができます。デストラクタの動作に応じて、純粋仮想メソッドにアクセスできます。

于 2011-07-30T20:26:00.513 に答える