具有静态模板类成员的模板类:如何定义静态成员
template class with static template class member: how to define the static member
我有一个模板类,它本身包含一个作为静态成员的模板类。我找不到正确的语法来定义静态成员,如示例中所示:
#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
cont
是Relais<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++中定义静态成员结构
- 指向重载静态成员的函数指针 - 在unique_ptr中用作自定义删除器
- 在类定义中推导内联静态成员函数的返回类型
- 如何声明和定义具有推导类型的静态成员
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 初始化在类类型 #define 中定义的非静态成员数组,不带默认 ctor
- thread_local静态成员模板定义:初始化失败,GCC
- 对类的静态成员的未定义引用
- C++ dll 定义静态成员
- 我正在尝试在我的类中创建一个静态成员,但编译器警告我它是未定义的
- 如何从具有专用化的类模板定义静态成员变量?
- 在类定义和使用静态数据之外定义私有成员函数
- 具有静态模板类成员的模板类:如何定义静态成员
- 为什么在定义静态成员变量时不遵循定义顺序
- 为什么在 linux 信号事件中未定义静态成员的使用
- C++ 如何定义静态成员,哪个类具有私有构造函数
- 定义静态成员的默认参数
- 使用decltype定义静态成员(Intellisense不同意)
- 我们是否仍然需要单独定义静态成员,即使它们是在类定义中初始化的
- c++超类为子类定义静态成员变量