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

时间:2014-12-16 13:59:11

标签: 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 }

但是,第5行不支持I see here行为 - &#34; C ++标准(2003)明确指出实例化具有不完整类型的标准容器会调用未定义的行为。&#34; < / p>

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

2 个答案:

答案 0 :(得分:1)

Boost有containers that support incomplete types。你可以使用其中一种。

#include <boost/container/vector.hpp>

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

答案 1 :(得分:0)

制作一个指针矢量

std::vector<CDirectory*> subDirectories;