2013-03-17 53 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