这是一个家庭作业问题。 有一个纯虚构造函数,假设原始不是null
BST::BST(const BST& original) {
root = original.root;
if (root != nullptr)
{
root = new Node();
root->setValue( original.root->getValue() );
Node* subtree = root;
Node* temp = original.root;
while (temp != nullptr)
{
subtree = new Node();
subtree->setLeft(temp->getLeft());
temp = temp->getLeft();
subtree = subtree->getLeft();
}
temp = original.root;
while (temp != nullptr)
{
subtree = new Node();
subtree->setRight(temp->getRight());
temp = temp->getRight();
subtree = subtree->getLeft();
}
}
}
//克隆
BST::VIRTUALBinary* clone() {
return (new BST(*this)); }
//调用main
VIRTUALBinary* orig = new BST();
VIRTUALBinary* copy = new BST();
copy = orig;
//删除原文,希望在主
中保留副本delete orig;
副本似乎与原始函数共享相同的值,因为每次删除原始文件时它都会自行删除。非常感谢任何帮助。
答案 0 :(得分:0)
您只是在复制指针。
使用clone
方法:
VIRTUALBinary* copy = orig->clone()