递归包含自身列表的对象



为了练习,我正在尝试制作一个递归目录解析器。

为了简洁起见,我也想递归地包含结果,例如:

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 }

但是,我在这里看到第 5 行不支持行为 - "C++标准 (2003( 明确指出,实例化具有不完整类型的标准容器会调用未定义的行为。

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

Boost 具有支持不完整类型的容器。您可以使用其中之一。

#include <boost/container/vector.hpp>
class CDirectory
{
   private:
       std::string name;
       boost::container::vector<CDirectory> subDirectories
   public:
       //Various things, constructors etc. go here
};

制作指针向量

std::vector<CDirectory*> subDirectories;

最新更新