在自己内部创建一个模板类的std容器

时间:2016-06-05 19:04:24

标签: c++ templates stl

我有以下类模板的继承层次结构:

#include <string>
#include <unordered_map>

// Basic class template
template <class T>
class Data
{
public:
  ~Data();
  Data();

protected:
  T data;
};

// Works with no problems
class String : public Data <std::string>
{

};

// Works with no problems
class Float : public Data <float>
{

};

// Compilation error
class Object : public Data < std::unordered_map < std::string, Data < Object > > >
{

};

我正在尝试创建一个我目前正在定义的类的std容器。这可能吗?如果这不是一个类模板,我可以做一个前向声明,但因为它是一个模板,这有什么机会吗?

1 个答案:

答案 0 :(得分:1)

std::unordered_map < std::string, Data < Object > > Object是一个不完整的类型

您可以使用指向Object的指针代替:

class Object : public Data <   std::unordered_map < std::string, Object* >>
{

};