Image

Проблема с шаблоном

Пишу шаблонный класс-синглтон и столкнулся с такой проблемой:

SingletonHolderTest.obj : error LNK2019: unresolved external symbol "public: static void __cdecl SingletonHolder::FreeInstance(void)" (?FreeInstance@?$SingletonHolder@H@@SAXXZ) referenced in function _main

SingletonHolderTest.obj : error LNK2019: unresolved external symbol "public: static int * __cdecl SingletonHolder::GetInstance(void)" (?GetInstance@?$SingletonHolder@H@@SAPAHXZ) referenced in function _main


Код класса:

template <class T>
class SingletonHolder
{
public:
         static T* GetInstance();
         static void FreeInstance();
protected:
         SingletonHolder(void);
         virtual ~SingletonHolder(void);
private:
         static T *instance;
         static long references;
};

Реализация:

template <class T>
SingletonHolder<T>::SingletonHolder(void)
{
}

template <class T>
SingletonHolder<T>::~SingletonHolder(void)
{
}

template <class T>
T* SingletonHolder<T>::GetInstance()
{
         if(!referneces)
                      instance=new T;
         references++;
         return instance;
}

template <class T>
void SingletonHolder<T>::FreeInstance()
{
          references--;
          if(!references)
                     delete instance;
}

В итоге когда пытаюсь вызвать SingletonHolder<int> ::GetInstance() или SingletonHolder<int> ::FreeInstance(), получаю вышеуказанные ошибки.
В чем тут проблема?

Среда разработки: VisualStudio .Net 2003


UPDATE: Вопрос снят.