我試圖在模板中創建一種工廠類。我想做一些像純虛函數一樣的東西,但是當我使用函數來創建類型時,它需要是靜態的。模板類中的靜態函數
我想要發生的是當我聲明一個類,模板調用靜態函數。靜態函數實際上是在模板類中聲明的。
我得儘可能:
class Base
{
};
template<typename T>
class Type : public Base
{
public:
static void Create()
{
mBase = CreateBase();
}
private:
static Base* CreateBase();
static Base* mBase;
};
class MyType : public Type<MyType>
{
private:
static Base* CreateBase()
{
return new MyType;
}
};
template<typename T>
Base* Type<T>::mBase = NULL;
void test()
{
MyType::Create();
}
我得到一個鏈接時錯誤:
undefined reference to `Type<MyType>::CreateBase()
也參見[奇異遞歸模板模式](http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)。 –