
DOMChildNode::remove 메소드를 사용하여 노드를 삭제하는 코드에서 노드가 삭제되지 않고 남아있는 이유는 delete node; 문이 두 번 호출되는 때문입니다.
remove 메소드는 재귀적으로 호출되며, child 노드가 삭제된 후에 parent 노드가 삭제됩니다. 따라서, child 노드가 삭제된 후에 parent 노드가 삭제되기 때문에 child 노드가 삭제되지 않고 남아있는 것입니다.
해결 방법은 delete node; 문을 하나로 합치면 됩니다.
#hostingforum.kr
cpp
void remove(Node* node) {
for (auto child : node->children) {
remove(child);
}
delete node;
}
이렇게 하면 child 노드가 삭제된 후에 parent 노드가 삭제되기 때문에 child 노드가 삭제됩니다.
2025-05-11 15:35