[英]Static function in template class
我正在嘗試在模板中創建一種工廠類。 我想做一些類似於純虛函數的東西,但它需要是靜態的,因為我正在使用該函數來創建類型。
我想要發生的是當我聲明一個類時,模板調用靜態函數。 靜態函數實際上是在templatised類中聲明的。
我到目前為止:
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()
CreateBase
函數在基類型中定義,因此只需調用它:
template<typename T>
class Type : public Base
{
public:
static void Create()
{
mBase = Base::CreateBase();
}
//...
無需在模板中聲明另一個CreateBase
。
找到了。
問題是我沒有調用派生類的函數。
這是修復:
static void Create()
{
mBase = T::CreateBase();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.