3.5 Freunde einer Klasse
  • Teilweise ist es notwendig, Nicht-Member-Funktionen, Funktionen anderer Klassen oder anderen Klassen einen Zugriff auf den private-Teil einer Klasse zu erlauben. Dazu muss sie als friend der Klasse deklariert werden. 
  • Syntax:

       class A {
            private:
                 friend class B;                     // alle Funktionen von B dürfen zugreifen
                 friend funkt();                       // die Funktion darf zugreifen
                 friend class C::funktB()         //  nur funktB der Klasse C darf zugreifen
            ...
       }
  • Die Angabe von "friend"s ist nur in der Klassendeklaration erlaubt.
  • Bei einzelnen Funktion reicht ggf. eine vollständige Deklaration.
  • Wenn eine Memberfunktion einer anderen Klasse befreundet werden soll, muss die Klasse zuvor deklariert sein (Achtung: ggf. Henne - Ei - Problem).