pointers_to_members
C++-spezifisch
Gibt an, ob ein Zeiger auf einen Klassenmember vor der zugeordneten Klassendefinition deklariert werden kann und verwendet wird, um die Zeigergröße und den Code zu steuern, die zum Interpretieren des Zeigers erforderlich sind.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Hinweise
Sie können ein pointers_to_members-Pragma als Alternative zur Verwendung der /vmx-Compileroptionen oder der Vererbungsschlüsselwörter in die Quelldatei einfügen.
Das pointer-declaration-Argument gibt an, ob Sie vor oder nach der zugeordneten Funktionsdefinition einen Zeiger auf ein Member deklariert haben. Das pointer-declaration-Argument ist eines der folgenden zwei Symbole:
Argument |
Kommentare |
---|---|
full_generality |
Generiert sicheren, manchmal nicht optimalen Code. Verwenden Sie full_generality, wenn ein Zeiger auf ein Member vor der zugeordneten Klassendefinition deklariert wird. Dieses Argument verwendet immer die Zeigerdarstellung, die vom most-general-representation-Argument angegeben wird. Entspricht "/vmg". |
best_case |
Generiert sicheren, optimalen Code unter Verwendung von Best-Case-Darstellung für alle Zeiger auf Member. Erfordert die Definierung der Klasse vor dem Deklarieren eines Zeigers auf einen Member der Klasse. Der Standard ist best_case. |
Das most-general-representation-Argument gibt die kleinste Zeigerdarstellung an, die der Compiler sicher verwenden kann, um beliebige Zeiger auf einen Member einer Klasse in einer Übersetzungseinheit zu referenzieren. Das Argument kann eines der folgenden sein:
Argument |
Kommentare |
---|---|
single_inheritance |
Die allgemeinste Darstellung ist ein Zeiger auf eine Memberfunktion mit einfacher Vererbung. Löst einen Fehler aus, wenn das Vererbungsmodell einer Klassendefinition, für die ein Zeiger auf ein Member deklariert wird, entweder mehrfach oder virtuell ist. |
multiple_inheritance |
Die allgemeinste Darstellung ist ein Zeiger auf eine Memberfunktion mit Mehrfachvererbung. Löst einen Fehler aus, wenn das Vererbungsmodell einer Klassendefinition, für die ein Zeiger auf ein Member deklariert wird, virtuell ist. |
virtual_inheritance |
Die allgemeinste Darstellung ist ein Zeiger auf eine Memberfunktion mit virtueller Vererbung. Löst nie einen Fehler aus. Dies ist das Standardargument, wenn #pragma pointers_to_members(full_generality) verwendet wird. |
Warnung
Verwenden Sie das pointers_to_members-Pragma am besten nur in der Quellcodedatei, für die es gelten soll, und nur nach allen #include-Direktiven.Diese Vorgehensweise verringert das Risiko, dass sich das Pragma auf andere Dateien auswirkt, und dass Sie versehentlich mehrere Definitionen für dieselbe Variable oder Funktion oder denselben Klassennamen angeben.
Beispiel
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )