在类定义中声明一个包含类本身的vector
declare a vector that contains the class itself in the class definition
在c++中,我们都知道这段代码是错误的:
class Node {
public:
Node node;
};
然而,像这样声明一个向量是正确的,为什么?
class Node {
public:
std::vector<Node> nodeVec;
};
它在我使用的c++ 14编译器中工作得很好。它还提供了一种非常方便的模式,可以在"单个"实例中表示任意大的复杂树形数据结构。一个很好的属性是,整个树的所有存储管理都由std::vector
自动处理。例如,您可以在Foo
类中拥有Node
成员变量,并且当您完成封闭Foo
实例时,不必担心删除树。
正如其他地方所描述的(我如何声明同一个类的成员向量?),这对编译器来说不是问题,因为std::vector<Node>
本身的大小与Node
的大小无关,因为std::vector
是一个固定大小的头,带有指向堆上一个单独的托管存储块的指针。
相关文章:
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- C++ .h 包含从一个类传递到另一个类的类和.cpp
- C++ - 是否可以让子类按值包含包含类?
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 从内部类中的方法从包含类调用方法
- 按类成员的顺序对包含类对象的C++向量进行排序
- 如何为包含另一个类实例的数组制作常量 getter?
- 建议一个合适的算法来合并包含类对象的两个数组(不重复)
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类
- 一个包含类、继承和多态性的谜语
- 在c++中可以有一个包含类模板的向量吗
- 如何在使用模板的类中包含另一个类
- Qt 包含另一个项目的类(无法打开包含文件:"foo.h")
- 在c++中,一个类是否可能有一个包含另一个类的对象的数组?
- 在类定义中声明一个包含类本身的vector
- 如何使用boost序列化轻松地序列化包含另一个自定义类的STL容器的自定义类
- 使用包含另一个类的函数指针的映射初始化
- 是否可以在一个类中包含另一个类的类对象数组
- 包含另一个派生类的c++类的继承
- 具有包含另一个类的对象的数组的子类的构造函数