2016-05-07 6 views
0

私はグラフを表すための独自のクラスのセットを実装しています。私は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[];しかし、2番目のコンストラクタに問題があります。これらのいずれも機能しませんでした:

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

これを実装する方法はありますか?以前はポインタで作業したことのないJava/Python開発者として、私がここで欠けていることが非常に明白なように感じます。

答えて

1

簡単な解決策は、adjacent_verticesにvectorを使用することです。

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) { } 
}; 
+0

この回答は私のために働いていましたが、私は修正を加えなければなりませんでした。逆参照演算子: 'adjacent_vertices(* adjacents)'を追加してください。答えのコードはコンパイルされません。 –

+0

コードがそのままコンパイルされます。 今のコードの最後の行を完全に表示できますか? なぜそれを差別化する必要があるのか​​わかりません。 –

+0

[ここにある](https://gist.github.com/CrazyPython/1f4b7671ff36ea1c7aae247ce109d34c)要点。私は他のすべてがコメントアウトされてそれを編集しました。私はC++ 11を使っています。 –

関連する問題