这是导致错误的代码:
Factory.h:
#include <string> #include <map> namespace BaseSubsystems { template <class T> class CFactory { protected: typedef T (*FunctionPointer)(); typedef std::pair<std::string,FunctionPointer> TStringFunctionPointerPair; typedef std::map<std::string,FunctionPointer> TFunctionPointerMap; TFunctionPointerMap _table; public: CFactory () {} virtual ~CFactory(); }; // class CFactory template <class T> inline CFactory<T>::~CFactory() { TFunctionPointerMap::const_iterator it = _table.begin(); TFunctionPointerMap::const_iterator it2; while( it != _table.end() ) { it2 = it; it++; _table.erase(it2); } } // ~CFactory }
我得到的错误:
error: no matching member function for call to 'erase' [3] _table.erase(it2); ~~~~~~~^~~~~
有小费吗?
谢谢.