由于多态性,C ++无法复制节点

时间:2019-10-06 22:41:56

标签: c++ polymorphism

我正在使用节点树,我想复制一个节点及其所有子节点,但是由于多态性而不能。

class Node 
{
    Node(const Node& other)
    {
        // not sure what to do
    }
    ~Node() virtual
    {
        for (auto child: children)
            delete child;
    }

    vector<Node*> children;
}

class Node1 
{
    // node1
}
class Node2
{
    // node2
}

节点中的子节点是节点1和节点2的混合体。

我尝试使用无法工作的新Node异常,因为那样的话,它就没有足够的空间容纳多态节点。我可以想到的唯一方法是使用malloc,但这似乎有些粗糙。

1 个答案:

答案 0 :(得分:0)

我会像这样创建一个抽象基类

class i_node
{
    public: 

    virtual i_node() = 0;
    virtual ~i_node(){}
}

并使Node,Node1和Node2都继承自i_node,其子级向量包含指向i_nodes的指针而不是派生类。

vector<i_node*> children;
相关问题