在自身中创建模板类的 STD 容器
create a std container of template class within itself
我有以下类模板的继承层次结构:
#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* >>
{
};
相关文章:
- 除了 std::vector 之外,是否有一个 std 容器不会复制和销毁作为类的元素?
- 是否可以确定传递的迭代器是否属于关联的 std 容器?
- 管理 std 容器中的抽象类
- 通过模板访问 std 容器的迭代器
- 使用ENABLE_IF和SFINAE时,功能参数类型扣除(std容器,例如向量)失败
- 是否可以使 std 容器使用默认运算符为新?
- 不同编译器中的STD容器的不同NOExcept属性
- 有没有一种透明的方式来在 std 容器中使用unique_ptr
- 如何从 std 容器的迭代器为成员元素创建迭代器
- 在自身中创建模板类的 STD 容器
- std容器元素的构造正确性
- 在 std::move 之后重复使用 std 容器是否安全
- 从另一个线程调用 std 容器上的大小是否安全
- 在 std:: 容器中使用受保护继承的原因
- boost::格式化和自定义打印 STD 容器
- 使用 boost 对多个 std 容器进行基于范围的迭代的概念问题
- 在发生异常时从 std 容器释放内存的策略bad_alloc
- Visual Studio Debugger:查看 std::list(和其他 std 容器)
- 将原始数据封装在类似std容器的数组中,具有运行时大小
- 将std容器传递给函数