Condividi tramite


Dichiarazioni Friend

Se si dichiara una funzione Friend che non è stata dichiarata precedentemente, tale funzione viene esportata nell'ambito nonclass contenitore.

Le funzioni dichiarate in una dichiarazione Friend vengono considerate come se fossero state dichiarate utilizzando la parola chiave extern. (Per ulteriori informazioni su extern, vedere Identificatori della classe di archiviazione statica).

Sebbene le funzioni con ambito globale possono essere dichiarate come Friend prima dei relativi prototipi, le funzioni membro non possono essere dichiarate come Friend prima che venga visualizzata la relativa dichiarazione di classe completa. Nel codice seguente è illustrato il motivo dell'errore:

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

L'esempio precedente immette il nome della classe ForwardDeclared nell'ambito, ma la dichiarazione completa (in particolare, la parte che dichiara la funzione IsAFriend) non è nota. Di conseguenza, la dichiarazione friend nella classe HasFriends genera un errore.

Per dichiarare due classi che rappresentano elementi Friend l'uno dell'altro, la seconda classe per intero deve essere specificata come Friend della prima classe. Il motivo di questa restrizione è che il compilatore dispone di informazioni sufficienti per dichiarare le singole funzioni Friend solo nel punto in cui la seconda classe viene dichiarata.

Nota

Sebbene la seconda classe per intero debba essere Friend della prima classe, è possibile selezionare le funzioni nella prima classe che saranno Friend della seconda classe.

Vedere anche

Riferimenti

friend (C++)