gpt4 book ai didi

c++ - 如何在我的模板类中初始化这个静态类变量?

转载 作者:行者123 更新时间:2023-11-27 23:07:16 25 4
gpt4 key购买 nike

我有以下代码(it's on ideone.com):

template<class T>
class CMemoryPool
{
public:
CMemoryPool(int param1)
: stuff(param1)
{}

private:
T stuff;
};

template<class T>
class CList
{
public:
struct Entry
{
T data;
};

static CMemoryPool<Entry> s_pool;
};

template<class T>
CList<T>::CMemoryPool<CList<T>::Entry>::s_pool(1);

int main()
{
CList<int> list;
}

我似乎无法在要编译的类之外获取s_pool 的初始化。谁能帮我弄清楚如何进行这项工作?请注意,我仅使用 C++03。

最佳答案

我认为您忘记了初始化静态数据成员的一般工作方式:

struct Data { int i; };

struct Holder { static Data StaticMember; };

Data Holder::StaticMember = { 1 };
^ ^~~~~~~~~~~~~~~~~~~~ static member qualified name
\~~~ static member type

如果您查看您的声明,您会发现您忘记了上述两项之一:

// Only a single element: there should be a type and a name
template<class T>
CList<T>::template CMemoryPool<typename CList<T>::Entry>::s_pool(1);

// Two elements
template<class T>
CMemoryPool<typename CList<T>::Entry> CList<T>::s_pool(1);
^ ^~~~~~~~~~~~~~~~ name
\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ type

一旦更正it just works

关于c++ - 如何在我的模板类中初始化这个静态类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714296/

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