在有向图中复制多态对象的构造函数

时间:2015-08-28 18:41:40

标签: c++

我有一个通用树的基类Node:

class Node {
public:
    Node() {
        parent = NULL;
        name = "";
        rule = NULLRULE;
        childs = std::vector<Node*>();
    };

    void addChild(Node* child){
        childs.push_back(child);
        child->setParent(this);
    };

    void setParent(Node* p) {
        this->parent = p;
    }

    virtual ~Node(){
        if (childs.size() == 0) return;

        // remove duplicate childs
        // since we allow having same child.
        std::sort(childs.begin(), childs.end());
        childs.erase(std::unique(childs.begin(), childs.end()), childs.end());
        for(unsigned int i = 0; i < childs.size(); i++) {
            delete childs[i];
        }
    }

我已经派生了类NodeSquare,NodeCircle等...所有节点在以下类中形成了一个树:

class Tree {
    Tree() {};
    ~Tree() {
        delete root;
    };
    void BFS(){};
    etc...
    Node* root;
}

如何为Tree类定义复制构造函数?我通过引用传递树,这就是我需要复制构造函数的原因......

processTree(Tree& t) {
    t = Tree();
}

1 个答案:

答案 0 :(得分:-3)

Tree(const Tree & copy)
{
 if(copy != *this)
  {
    //to do
  }

}

复制构造是这个签名,然后如果您为正常构造函数分配数据的范围,该语句是为了安全,但您可以使用àlistinitializer。