簡體   English   中英

模板類中的靜態函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM