包含相邻顶点列表的自定义顶点类型[图形]:不完整类型错误

Custom Vertex type [graphs] containing list of adjacent vertices: incomplete type error

本文关键字:类型 顶点 错误 列表 自定义 包含相 图形      更新时间:2023-10-16

我正在实现我自己的一组用于表示图的类。我是C++的新手,所以我在指针方面遇到了一些问题。你看,这是我原来的代码:

class Vertex {
 public:
    int label;
    Vertex adjacent_vertices[];
    Vertex(int l) : label(l) { }
    Vertex(int l, Vertex adjacents[]) : label(l), adjacent_vertices(adjacents) { }
};

但后来我得到了一个不完整的类型错误。根据我的研究,我显然需要为adjacent_vertices使用一个指针列表。Vertex* adjacent_vertices[];但是第二个构造函数出现了问题。这些都不起作用:

adjacent_vertices(*adjacents)
adjacent_vertices(adjacents*)
adjacent_vertices(&adjacents)

有没有更好的方法来实现这一点?作为一个从未使用过指针的Java/Python开发人员,我觉得我在这里缺少了一些非常明显的东西。

一个简单的解决方案是为相邻的顶点使用向量。

class Vertex {
public:
    int label;
    vector<Vertex> adjacent_vertices;
    Vertex(int l) : label(l) { }
    Vertex(int l, vector<Vertex> adjacents) : label(l), adjacent_vertices(adjacents) { }
};