C++ c++;can';由于多态性,无法复制节点
我正在处理一个节点树,我想复制一个节点及其所有子节点,但由于多态性,我不能C++ c++;can';由于多态性,无法复制节点,c++,polymorphism,C++,Polymorphism,我正在处理一个节点树,我想复制一个节点及其所有子节点,但由于多态性,我不能 类节点 { 节点(常量节点和其他) { //不知道该怎么办 } ~Node()虚拟节点 { 用于(自动子对象:子对象) 删除儿童; } 媒介儿童; } 类节点1 { //节点1 } 类节点2 { //节点2 } 节点中的子节点是节点1和节点2的组合 我尝试过使用新节点异常,但它不起作用,因为它没有足够的空间容纳多态节点。我能想到的唯一方法是使用malloc,但这似乎有点粗糙 我将创建一个抽象基类,如下所示 class
类节点
{
节点(常量节点和其他)
{
//不知道该怎么办
}
~Node()虚拟节点
{
用于(自动子对象:子对象)
删除儿童;
}
媒介儿童;
}
类节点1
{
//节点1
}
类节点2
{
//节点2
}
节点中的子节点是节点1和节点2的组合
我尝试过使用新节点异常,但它不起作用,因为它没有足够的空间容纳多态节点。我能想到的唯一方法是使用malloc,但这似乎有点粗糙 我将创建一个抽象基类,如下所示
class i_node
{
public:
virtual i_node() = 0;
virtual ~i_node(){}
}
并使Node、Node1和Node2都从i_节点继承,子向量包含指向i_节点的指针,而不是派生类
vector<i_node*> children;
向量子;
使用dynamic\u cast
尝试if statemt。也许会有帮助。Node1
和Node2
不应该从Node
派生吗?您的描述暗示了这一点,但它不在您的代码中。多态性只适用于指针或引用,因此您使用vector
已经有了一个良好的开端。但是也必须有一个公共父类。假设(我假定派生的关系应该存在于代码中)P.S. C++替换为<代码> MalOC 是代码>新< /code >。