2013-03-17 11 views
5

私はクラスC返すerror: 'func' does not name a type場合クラスのメンバー関数funcB試み得る:funcはAのメンバ関数である場合、一方C++でクラス関数を使用するには?

class A { 
    public: 
     class B { 
      public: 
       C func() const { 
        ... 
       } 
      private: 
       friend class A; 
     } 

     class C { 
      public: 
       ... 
      private: 
       friend class A; 
     } 
    private: 
     ... 
} 

を、次のは、このエラーを生成しない。

class A { 
    public: 
     class B { 
      public: 
       ... 
      private: 
       friend class A; 
     } 

     C func() const { 
      ... 
     } 

     class C { 
      public: 
       ... 
      private: 
       friend class A; 
     } 
    private: 
     ... 
} 

最初のバージョンを動作させるにはどうすればよいですか?

私は偉大な例hereを見つけました。

+1

なぜ別のクラスの中でクラスを宣言していますか? – lxop

答えて

8

クラスCを「上の」クラスBに定義するか、前方に宣言します。

+1

フォワード宣言のヒントありがとうございました! – Pippi

+1

まだ2番目の例で前方宣言なしで逃げることができますか? – Bingo

関連する問題