C ++ map.clear()纯虚方法运行时错误

时间:2011-07-30 18:48:57

标签: c++ map clear pure-virtual

我认为问题可能源于使用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),这会产生同样的错误。

1 个答案:

答案 0 :(得分:1)

如果bar是多态类型,那么当它可以切片时。根据析构函数的作用,它可以访问纯虚方法。