包含递归的自身列表的对象

med*_*ivh 6 c++ object

为了练习,我试图创建一个递归目录解析器.

为了简约,我想要递归地包含结果,例如:

1 class CDirectory
2 {
3     private:
4        std::string name;
5        std::vector<CDirectory> subDirectories
6    public:
7        //Various things, constructors etc. go here
8 }
Run Code Online (Sandbox Code Playgroud)

但是,我在这里看到第5行不受支持的行为 - "C++标准(2003)明确表示实例化一个不完整类型的标准容器,调用未定义的行为."

那么,我该怎么办?有没有办法让对象包含类似对象的列表?如果不出意外,我知道制作矢量矢量绝不是违法的,所以这是一个包含自身的对象.

Law*_*llo 0

制作一个指针向量

std::vector<CDirectory*> subDirectories;
Run Code Online (Sandbox Code Playgroud)

  • `std::unique_ptr` 几乎总是比原始指针更好。 (4认同)