gpt4 book ai didi

c++ - 模板类中的静态函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:42 27 4
gpt4 key购买 nike

我正在尝试在模板中创建一种工厂类。我想做一些类似于纯虚函数的事情,但它需要是静态的,因为我正在使用该函数来创建类型。

我想要发生的是当我声明一个类时,模板调用静态函数。静态函数实际上是在模板化类中声明的。

我已经做到了:

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

关于c++ - 模板类中的静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com