pointers_to_members
Section spécifique à C++
Spécifie si un pointeur vers un membre de classe peut être déclaré avant la définition de classe qui lui est associée et s'il sert à contrôler la taille du pointeur et le code requis pour interpréter le pointeur.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Notes
Vous pouvez placer un pragma pointeurs_vers_membres dans votre fichier source au lieu d'utiliser les options du compilateur /vmx ou les mots clés d'héritage.
L'argument pointer-declaration spécifie si vous avez déclaré un pointeur vers un membre avant ou après la définition de fonction associée. L'argument pointer-declaration est l'un des deux symboles suivants :
Argument |
Commentaires |
---|---|
full_generality |
Génère un code sécurisé, parfois non optimal. Vous utilisez full_generality si un pointeur vers un membre est déclaré avant la définition de classe associée. Cet argument utilise toujours la représentation de pointeur spécifiée par l'argument most-general-representation. Équivaut à /vmg. |
best_case |
Génère un code sécurisé et optimal à l'aide de la représentation préférentielle pour tous les pointeurs vers des membres. Nécessite de définir la classe avant de déclarer un pointeur vers un membre de la classe. La valeur par défaut est best_case. |
L'argument most-general-representation spécifie la plus petite représentation de pointeur que le compilateur peut utiliser sans risque pour référencer n'importe quel pointeur vers un membre d'une classe d'une unité de traduction. L'argument peut être l'un des arguments suivants :
Argument |
Commentaires |
---|---|
single_inheritance |
La représentation la plus générale est la fonction pointeur vers fonction membre héritage simple. Génère une erreur si le modèle d'héritage d'une définition de classe pour laquelle un pointeur vers un membre est déclaré est de type multiple ou virtuel. |
multiple_inheritance |
La représentation la plus générale est la fonction pointeur vers fonction membre héritage multiple. Génère une erreur si le modèle d'héritage d'une définition de classe pour laquelle un pointeur vers un membre est déclaré est de type virtuel. |
virtual_inheritance |
La représentation la plus générale est la fonction pointeur vers fonction membre héritage virtuel. Ne génère jamais d'erreur. Il s'agit de l'argument par défaut lorsque #pragma pointers_to_members(full_generality) est utilisé. |
Avertissement
Nous vous recommandons d'insérer le pragma pointers_to_members uniquement dans le fichier de code source que vous souhaitez affecter, et uniquement après les directives #include.Cette pratique atténue le risque que le pragma affecte d'autres fichiers et que vous spécifiiez par erreur plusieurs définitions pour la même variable, la même fonction ou le même nom de classe.
Exemple
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )