Я пытаюсь перенести проект из Windows в Mac. У меня возникают проблемы с компиляцией класса CFactory. Я попытаюсь проиллюстрировать эту проблему.ожидается ';' после выражения
Вот что у меня есть на моем Factory.h
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
}
Когда я пытаюсь скомпилировать, компилятор жалуется:
Factory.h:95:44: error: expected ';' after expression [1]
TFunctionPointerMap::const_iterator it = _table.begin();
^
;
Почему это происходит? Что мне не хватает?
ПРИМЕЧАНИЕ. Этот проект правильно компилируется на MSVC.
Спасибо.
[Требует более 'typename'] (http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename- ключевые слова). –
Извините, но почему вы на самом деле это подразумеваете? Благодарю. – frarees
'typename TFunctionPointerMap :: const_iterator' должен исправить это. См. Ссылку, которую я разместил для всех подробных подробностей. –