Sdílet prostřednictvím


Prohlášení přítele

Deklarujete přítele funkci, která není deklarován dříve, funkce, je exportován ohraničujícím oboru nonclass.

Funkce deklarované v prohlášení přítele se pracuje, jako kdyby byly deklarovány pomocí extern klíčové slovo.(Další informace o extern, viz Statické Specifikátory paměťových tříd.)

Přestože funkce s globálním rozsahem mohou být deklarovány jako přátelé před jejich prototypů, funkce členů nelze deklarovat jako přátele před vzhled jejich deklarace třídy dokončeno.Následující kód Proč to selhání:

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

V předchozím příkladu zadá název třídy ForwardDeclared do oboru, ale kompletní prohlášení – konkrétně část, která deklaruje funkci IsAFriend – není znám.Proto friend prohlášení v třídě HasFriends generuje chybu.

Chcete-li deklarovat dvě třídy, které jsou přátelé jeden musí být zadán celý druhé třídy jako přítele první třídy.Důvod tohoto omezení je, že kompilátor nemá dostatek informací k deklarovat přítele jednotlivé funkce pouze v místě, kde je deklarována druhé třídy.

[!POZNÁMKA]

Ačkoli celé druhé třídy musí být přítele do první třídy, můžete vybrat, které funkce v první třídě budou přátelé druhé třídy.

Viz také

Referenční dokumentace

přítel (C++)