Udostępnij za pośrednictwem


Deklaracje znajomego

Jeśli można zadeklarować funkcji zaprzyjaźnionej, która nie została wcześniej zadeklarowana, ta funkcja jest eksportowane do otaczający zakresu nonclass.

Funkcje zadeklarowane w deklaracji przyjaciel są traktowane tak, jakby miał zostały zadeklarowane, za pomocą extern słowa kluczowego.(Aby uzyskać więcej informacji o extern, zobacz Statyczne Specyfikatory klasy magazynowania.)

Chociaż funkcje o zakresie globalnym mogą być deklarowane jako znajomych przed ich prototypy, funkcji elementów członkowskich nie można zadeklarować jako przyjaciół przed pojawieniem się ich deklaracji klasy kompletne.W poniższym kodzie przyczyny awarii:

class ForwardDeclared;   // Class name is known.
class HasFriends
{
    friend int ForwardDeclared::IsAFriend();   // C2039 error expected
};

Poprzedni przykład wprowadza nazwę klasy ForwardDeclared do zakresu, ale pełnego zgłoszenia — w szczególności część deklaruje funkcję IsAFriend — nie jest znana.W związku z tym friend deklarację klasy HasFriends generuje błąd.

Aby zadeklarować dwóch klas, które są przyjaciele, jeden na drugim, cały drugiej klasy musi być określona jako przyjaciel pierwszej klasy.Powodem tego ograniczenia jest, że kompilator ma wystarczająco dużo informacji, aby zadeklarować przyjaciel poszczególnych funkcji tylko w punkcie, w którym zadeklarowano drugiej klasy.

[!UWAGA]

Chociaż całej drugiej klasy musi być przyjaciela do pierwszej klasy, można wybrać, których funkcje w pierwszej klasie będą przyjaciół drugiej klasy.

Zobacz też

Informacje

przyjaciel (C++)