2011-07-30 2 views
0

나는이 문제가 boost :: shared_ptrs를 키 값으로 사용하여 발생할 수 있다고 생각합니다.C++ map.clear() 순수 가상 메서드 런타임 오류

//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)를 사용하여 동일한 오류가 발생했습니다.

+0

'막대'란 무엇입니까? 그것은 추상적 인 수업입니까? 또는'foo'는 추상 클래스입니까? –

+5

'foo'와'bar'의 정의와'foo'와'bar'의 모든 기본 클래스의 정의를 보여주십시오. –

+1

'foo' 란 무엇이고'bar' 란 무엇입니까? – Nawaz

답변

1

막대가 다형성 유형 인 경우 클래스를 조각 낼 수있는 경우. 소멸자가 수행하는 작업에 따라 순수 가상 메서드에 액세스 할 수 있습니다.