小编Hao*_*ang的帖子

循环数据依赖析构函数

我现在正在设计我自己的带有邻接列表的图形类.除了析构函数之外,我完成了大部分步骤.

这是我的Vertex类:

struct Vertex{
public:
    Vertex(){m_name="";}
    Vertex(string name):m_name(name){}
    ~Vertex(){
        cout << "vertex des" << endl;
        for(int i = 0; i < m_edge.size(); i++){
            delete m_edge[i];
            m_edge[i] = nullptr;
        }
    }
    string m_name;
    vector<Edge*> m_edge;
};
Run Code Online (Sandbox Code Playgroud)

这是我的Edge类:

struct Edge{
public:
    Edge() : m_head(nullptr), m_tail(nullptr) {m_name="";}
    Edge(string name) : m_name(name), m_head(nullptr), m_tail(nullptr) {}

    ~Edge(){
        cout << "Edge des" << endl;

        delete m_head;
        m_head = nullptr;
        delete m_tail;
        m_tail = nullptr;
    }

   string m_name;

   Vertex* m_head;
   Vertex* m_tail;
};
Run Code Online (Sandbox Code Playgroud)

但是,我注意到在调用析构函数时,两个类实际上都调用了彼此的析构函数,因此这给了我一个无限循环.这个设计有问题吗?如果没有,有没有办法解决这个析构函数问题?谢谢!

c++ oop graph c++11

5
推荐指数
1
解决办法
179
查看次数

标签 统计

c++ ×1

c++11 ×1

graph ×1

oop ×1