小编Tom*_*son的帖子

避免在析构函数中无限递归

作为我的大学分配给我的练习的一部分,我编写了一个小的 Graph 实现,遵循这个标题。

class Node {

private:
    std::string name;
    std::vector<Node*> children;

public:
    Node(const std::string& name="");
    virtual ~Node();

}
Run Code Online (Sandbox Code Playgroud)

在为析构函数编写代码时~Node(),我注意到当图形包含循环时我的实现失败。到目前为止,这是我的实现,如果图形包含循环,这显然不起作用。

Node::~Node() {
    for (Node* n : children) {
        delete n;
        n = NULL;
    }
    children.clear();
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何最优雅地编写一个可以处理图中循环的析构函数?

请注意,我的任务是专门编写一个递归析构函数。谢谢您的回答!

c++ recursion destructor graph c++14

8
推荐指数
1
解决办法
441
查看次数

标签 统计

c++ ×1

c++14 ×1

destructor ×1

graph ×1

recursion ×1