Partager via


Noms et noms qualifiés

Les noms utilisés avec l'opérateur binaire de résolution de portée (::) sont appelés « des noms qualifiés. » Le nom spécifié après l'opérateur binaire de résolution de portée doit être membre de la classe spécifiée le à gauche de l'opérateur ou un membre de sa classe de base.

Noms spécifiés après que l'opérateur member-selection (. ou - >) doivent être membres du type de classe de l'objet spécifié le à gauche de l'opérateur ou les membres de sa classe de base.Les noms spécifiés à droite de l'opérateur member-selection (- >) peuvent également être des objets d'un autre type de classe, si le côté gauche de - > soit un objet de classe et que la classe définit un opérateur surchargé member-selection (- >) qui correspond à un pointeur vers un autre type de classe.(Cette disposition est décrite plus en détail dans membre de classe Access.)

Les recherches de compilateur pour les noms dans l'ordre suivant, en s'arrêtant quand le nom est trouvé :

  1. Portée de bloc active si le nom est utilisé à l'intérieur d'une fonction ; sinon, portée globale.

  2. Vers l'extérieur via chaque portée de bloc englobante, y compris la portée de surface de fonction (qui inclut des arguments de fonction).

  3. Si le nom est utilisé dans une fonction membre, la portée de la classe est trouvée le nom.

  4. Les classes de base de la classe sont trouvées le nom.

  5. La portée de classe imbriquée plaçant entree (le cas échéant) et ses bases sont trouvés.La recherche se poursuit jusqu'à ce que la portée de surface de classe englobante est trouvée.

  6. La portée globale est trouvée.

Toutefois, vous pouvez apporter des modifications à cet élément de recherche comme suit :

  1. Les noms précédés par :: forcent la recherche pour démarrer au niveau de la portée globale.

  2. Les noms précédés par classe, struct, les mots clés et d' union forcent le compilateur recherche uniquement classe, struct, ou des noms d' union .

  3. Les noms situé à gauche de l'opérateur de résolution de portée (::) peuvent être uniquement classe, struct, l'espace de noms, ou des noms d' union .

Si le nom fait référence à un membre non static mais il est utilisé dans une fonction membre statique, un message d'erreur est générée.De même, si le nom fait référence à un membre non statique dans une classe englobante, un message d'erreur est générée car les classes placé n'ont pas de pointeurs de cela de classe englobante.

Voir aussi

Référence

Résumé des règles de portée