在自身中创建模板类的 STD 容器

create a std container of template class within itself

本文关键字:STD 容器 建模 创建      更新时间:2023-10-16

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

#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 容器。这可能吗?如果这不是类模板,我可以做一个前向声明,但由于它是一个模板,这有什么可能起作用吗?

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

您可以改用指向Object的指针:

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