C++ 带静态模板类成员的模板类:如何定义静态成员
我有一个模板类,它本身包含一个模板类作为静态成员。我找不到正确的语法来定义静态成员,如示例所示:C++ 带静态模板类成员的模板类:如何定义静态成员,c++,templates,C++,Templates,我有一个模板类,它本身包含一个模板类作为静态成员。我找不到正确的语法来定义静态成员,如示例所示: #include <iostream> #include <list> template <typename B> class Container { std::list<B*> l; public: void add( B* b) { l.push_back(b); } }; templ
#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();
}
#包括
#包括
模板
类容器
{
std::列表l;
公众:
无效添加(B*B)
{
l、 推回(b);
}
};
模板
阶级关系
{
公众:
使用RELAIS_TYPE=RELAIS;
静态容器控制;
void Do()
{
续(本);
}
};
//未编译:此处的正确语法是什么。。。?
集装箱运输:续;
int main()
{
relaisr;
r、 Do();
}
首先,您的代码没有在任何地方定义容器,所以我假设它类似于
template<typename Foo>
class Container{};
在我的示例中添加了缺少的代码部分。。。复制粘贴…;)
template < typename A >
Container<typename Relais<A>::RELAIS_TYPE> Relais<A>::cont;
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;
}