Condividi tramite


Nomi e nomi completi

Nomi utilizzati con l'operatore binario di risoluzione dell'ambito (::) sono denominati “nomi completi.„ Il nome specificato dopo l'operatore binario di risoluzione dell'ambito necessario essere un membro della classe specificata a sinistra dell'operatore o un membro della classe base.

Nomi specificati dopo l'operatore di selezione dei membri (. o - >) devono essere membri del tipo della classe dell'oggetto specificato a sinistra dell'operatore o i membri della classe base.Nomi specificati a destra dell'operatore di selezione dei membri (- >) possono essere anche gli oggetti di un altro tipo di classe, a condizione che la sinistra di - > è l'oggetto della classe e la classe definisce un operatore di overload di selezione dei membri (- >) che restituisce un puntatore a un altro tipo della classe.(Questa operazione viene discussa più dettagliatamente in Membro della classe Access).

Il compilatore rileva dei nomi nell'ordine, arrestando quando il nome viene trovato:

  1. Ambito blocco corrente se il nome è utilizzato in una funzione, in caso contrario, ambito globale.

  2. Esternamente a ogni ambito blocco di inclusione, inclusi l'ambito più esterno della funzione (che include gli argomenti della funzione.

  3. Se il nome è utilizzato in una funzione membro, l'ambito della classe viene trovato il nome.

  4. Le classi base della classe sono disponibili il nome.

  5. Viene annidato l'ambito di classe (se presenti) e le relative basi disponibili.La ricerca continua fino a trovare l'ambito più esterno della classe interna.

  6. L'ambito globale viene trovato.

Tuttavia, è possibile apportare le modifiche a questo ordine di ricerca come segue:

  1. Nomi preceduti da :: forzare la ricerca per avviare in ambito globale.

  2. Nomi preceduti da classe, structe unione le parole chiave forzano il compilatore per trovare solo classe, struct, o unione nomi.

  3. Nomi a sinistra dell'operatore di risoluzione dell'ambito (::) possono essere solo classe, struct, spazio dei nomi, o unione nomi.

Se il nome fa riferimento a un membro non statico ma viene utilizzato in una funzione membro static, un messaggio di errore viene generato.Analogamente, se il nome si riferisce a un membro non statico in una classe interna, un messaggio di errore viene generato perché le classi incluse non hanno classe interna ciò puntatori.

Vedere anche

Riferimenti

Riepilogo delle regole di ambito