-1
我有一個類繼承自一個單身繼承的模板的系統。鏈接錯誤與嵌套模板
問題是靜態成員* 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 2012-03-12 15:31:50
@zmatz很高興聽到這一點。請接受答案 - 左邊的點應該有一些綠色的ok標誌。 – 2012-03-12 15:48:11