gpt4 book ai didi

c++ - 具有静态模板类成员 : how to define the static member 的模板类

转载 作者:行者123 更新时间:2023-11-30 05:13:07 26 4
gpt4 key购买 nike

我有一个模板类,它本身包含一个模板类作为静态成员。我找不到正确的语法来定义静态成员,如示例所示:

#include <iostream>
#include <list>

template <typename B>
class Container
{
std::list<B*> l;

public:
void add( B* b)
{
l.push_back(b);
}
};

template < typename A >
class Relais
{
public:
using RELAIS_TYPE = Relais<A>;
static Container<RELAIS_TYPE> cont;

void Do()
{
cont.add(this);
}
};

// did not compile: Which is the correct syntax here...?
Container<Relais<int>> Relais<int>::cont;

int main()
{
Relais<int> r;
r.Do();
}

最佳答案

首先,您的代码没有定义 Container任何地方,所以我认为它类似于

template<typename Foo>                                                                                                                                                                                  
class Container{};

有了它,你就可以使用

template < typename A >
Container<typename Relais<A>::RELAIS_TYPE> Relais<A>::cont;

这表示对于模板类型 A

  • contRelais<A> 的成员

  • 它的类型是 Container<typename Relais<A>::RELAIS_TYPE> .


完整(建筑)代码:

template<typename Foo>                                                                                                                                                                                  
class Container{};

template < typename A >
class Relais
{
public:
using RELAIS_TYPE = Relais<A>;
static Container<RELAIS_TYPE> cont;

void Do()
{
cont.add(this);
}
};

template < typename A >
Container<typename Relais<A>::RELAIS_TYPE> Relais<A>::cont;

int main()
{
Relais<int> r;
}

关于c++ - 具有静态模板类成员 : how to define the static member 的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44090761/

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