2017-03-08 12 views
3

が、私はこれに類似した構造を作成したいです構文エラーや「インスタンス化できません」などのエラーの種類は、GetNextがオーバーライドされている派生クラスをインスタンス化しようとしていると思っていました。C++ネストされたクラスのメソッド

質問です:その構造はC++でも許可されていて、正しく実装する方法はありますか?

+0

'Vertex'(およびその内側'グラフ ')の中で、あなたは単に' Vertex'の代わりに、 '型名グラフ :: Vertex'を使用することができます。 – Jarod42

答えて

4

あなたのコードの唯一の問題はGetNextからVertexに電話することですが、VertexにはGetNextメンバー機能がありません。

GraphのメソッドをVertexから呼び出す場合は、Graph変数が必要です(例:メンバ変数:

struct Vertex { 
    Graph& graph; 

    std::vector<typename Graph<W>::Vertex> next() { 
     return graph.GetNext(*this); 
    } 
}; 
関連する問題