Когда я пытаюсь скомпилировать это:Что вызывает эту ошибку компиляции, связанную с шаблоном?
#include <map>
#include <string>
template <class T>
class ZUniquePool
{
typedef std::map< int, T* > ZObjectMap;
ZObjectMap m_objects;
public:
T * Get(int id)
{
ZObjectMap::const_iterator it = m_objects.find(id);
if(it == m_objects.end())
{
T * p = new T;
m_objects[ id ] = p;
return p;
}
return m_objects[ id ];
}
};
int main(int argc, char * args)
{
ZUniquePool<std::string> pool;
return 0;
}
я получаю это:
main.cpp: In member function ‘T* ZUniquePool<T>::Get(int)’:
main.cpp:12: error: expected `;' before ‘it’
main.cpp:13: error: ‘it’ was not declared in this scope
Я использую GCC 4.2.1 на Mac OS X. Он работает в VS2008.
Я задаюсь вопросом, может ли это быть изменение этой проблемы: Why doesn't this C++ template code compile? Но мой вывод ошибок только частично похожи, и мой код работает в VS2008, я не уверен.
Может ли кто-нибудь пролить свет на то, что я делаю неправильно?
Fantastic! Вы не только решили мою проблему, но и сделали мне понять, что принципиально важно в том, как обрабатываются шаблоны компилятором. Спасибо, кучка. – Setien