
1. unlink 메소드를 사용할 때, 자식 노드가 삭제되지 않는 이유는 자식 노드가 다른 노드에 참조되어 있거나, 자식 노드가 노드 트리 내에서 다른 위치에 존재할 수 있기 때문입니다.
2. 자식 노드를 함께 삭제하기 위해서는 자식 노드의 참조를 해제하고, 노드 트리 내에서 자식 노드를 찾은 후 삭제해야 합니다.
예를 들어, 자식 노드를 삭제하기 위해 다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
cpp
void CommonMarkNode::unlink() {
// 자식 노드의 참조를 해제
for (auto& child : children) {
child.parent = nullptr;
}
// 자식 노드를 삭제
children.clear();
}
또한, 노드 트리 내에서 자식 노드를 찾는 로직을 추가해야 합니다.
#hostingforum.kr
cpp
void CommonMarkNode::removeChild(CommonMarkNode* child) {
// 자식 노드가 존재하는지 확인
auto it = std::find(children.begin(), children.end(), child);
if (it != children.end()) {
// 자식 노드의 참조를 해제
child->parent = nullptr;
// 자식 노드를 삭제
children.erase(it);
}
}
이러한 로직을 사용하면 자식 노드를 함께 삭제할 수 있습니다.
2025-05-16 21:14