2013-03-17 11 views
5

posso ottenere un error: 'func' does not name a type Quando una funzione membro func di una classe B tentativi di tornare una classe C:Come utilizzare una funzione di classe in C++?

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

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

considerando che, se func è una funzione membro di A, allora la seguente non produce questo errore:

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

     C func() const { 
      ... 
     } 

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

Come posso risolvere il problema per far funzionare la prima versione?

Ho trovato un ottimo esempio here.

+1

Perché stai dichiarando le lezioni in un'altra classe? – lxop

risposta

8

Definire la classe C "sopra" la classe B o in avanti dichiararla.

+1

Grazie mille per il suggerimento sulla dichiarazione in avanti! – Pippi

+1

Sono ancora curioso di sapere come si può andare avanti senza una dichiarazione anticipata nel secondo esempio ... – Bingo

Problemi correlati