-1
У меня есть система классов, наследующая от шаблона, который наследует от Singleton.Ошибка связывания с вложенными шаблонами
Проблема в том, что статический член * ms_Singleton * не может быть правильно связан в специализированной версии моего класса. И я получил следующее сообщение об ошибке:
error LNK2001: unresolved external symbol "protected: static class MyBase * Singleton >::ms_Singleton"
Мой код:
template <typename T>
class Singleton
{
protected:
static T* ms_Singleton;
public:
Singleton(void)
{
ms_Singleton = static_cast< T* >(this);
}
static void init(void){};
static T& getSingleton(void)
{ assert(ms_Singleton); return (*ms_Singleton); }
};
template <class T>
class MyBase : public Singleton< MyBase<T> >
{
public:
MyBase()
{
}
};
/*template <class T>
MyBase<T>* Singleton< MyBase<T> >::ms_Singleton = 0;*/
class MySpecialized : public MyBase<MySpecialized >
{
public:
MySpecialized()
{
}
};
template <>
MySpecialized* Singleton<MySpecialized>::ms_Singleton = 0;
int main()
{
MySpecialized t;
}
Thanx Pawel !! Это работает как образец в моем примере проекта! Я попытаюсь реализовать его сейчас в своем большом проекте. :) – matt
@zmatz Приятно это слышать. Пожалуйста, примите ответ - должен быть какой-то зеленый знак ok ниже точек слева. –