C ++ map.clear () ошибка чисто виртуального метода во время выполнения - PullRequest
0 голосов
/ 30 июля 2011

Я считаю, что проблема может быть связана с использованием 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 Ответ

1 голос
/ 31 июля 2011

Если bar является полиморфным типом, тогда вы можете нарезать класс.В зависимости от того, что делает деструктор, он может получить доступ к чисто виртуальному методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...