现在想做一个类似资源管理器的树形视图,使用CTreeCtrl,我用某种数据结构对应这个树控件.需要某个节点的子结点和他有相同的类型,(就比如,文件夹的子节点还是文件夹),现在采用数组的形式遇到了问题,若在类中使用自身类的指针并动态分配它,这样拷贝,复制以及析构的时候的时候都会递归.
请教一下,是否还有其他的数据结构可以解决?主要是想解决父节点和子结点有相同类型的问题(因为这样自然而然的想到用一个类,带一个自身的指针)

解决方案 »

  1.   

    数组?vector?
    递归就递归,有什么问题?
      

  2.   

    回LS,比如在构造函数里 new 自己的类型,那一直递归了,其他的类似
      

  3.   

    struct node
    {
        vector<node*> vChilds;
        xxxxxx...
    };
    构造时new自己的数据,遍历到第一级子目录时就加进来
      

  4.   


    谢谢,但是vector的拷贝构造是只拷贝指针
      

  5.   


    能够详细一些吗?我现在也是自己的类带一个自身类型的指针..
    比如:
    class CFolder
    {
    public:
       CFolder* pFolder;//然后再new一个CFolder数组
    };但是拷贝或者复制的时候就不行了,也是递归...不知道有没有更好的方法呢?
      

  6.   

    回LS,两个指针指向同一个内存,这并不是我想要的。
    我设计得估计不合理,我是想设计一个类似资源管理器的结构,用某种结构去对应CTreeCtrl,现在要求某个节点的子结点的类型和他一样,不知道有没有更好的方法?
      

  7.   

    回LS版主,运行时报错的,构造和析构也许还能解决,赋值的时候就不知道怎么办了,因为我想的是赋值不是指针,这样在调用operator=的时候,在函数体里我又需要调用成员的operator=,而这个成员的指针解除引用又是该类自身的类型,这样又递归调用operator=.