2013-03-17 101 views
5

我獲得error: 'func' does not name a type當一個類的成員函數funcB嘗試返回類C如何在C++中使用類函數?

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

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

然而,如果func是A的一個成員函數,則下面不會產生這樣的錯誤:

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

     C func() const { 
      ... 
     } 

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

我該如何解決它才能使第一個版本工作?

我發現一個很好的例子here

+1

你爲什麼要在另一個類中聲明類? – lxop 2013-03-17 05:36:52

回答

8

定義C類「在」B類之上,或者向前聲明它。

+1

非常感謝您提出正確申明的提示! – Pippi 2013-03-17 05:45:14

+1

我仍然很好奇,爲什麼你可以在沒有第二個例子中的前向聲明的情況下離開... – Bingo 2013-03-17 12:36:38