2013-03-17 17 views
5

I erhalten ein error: 'func' does not name a type, wenn ein Mitglied Funktion func einer Klasse B versucht, eine Klasse zurückzukehren C:Wie verwendet man eine Klassenfunktion in C++?

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

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

Wenn dagegen func Mitglied Funktion von A ist, dann wird der folgende diesen Fehler nicht erzeugen:

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

     C func() const { 
      ... 
     } 

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

Wie kann ich es beheben, damit die erste Version funktioniert?

Ich fand ein großartiges Beispiel here.

+1

Warum deklarieren Sie Klassen in einer anderen Klasse? – lxop

Antwort

8

Definieren Sie Klasse C "über" Klasse B, oder melden Sie sie an.

+1

Vielen Dank für den Hinweis auf Vorwärts Deklaration! – Pippi

+1

Ich bin immer noch neugierig, warum du ohne eine Vorwärtsdeklaration im zweiten Beispiel davonkommen kannst ... – Bingo

Verwandte Themen