Freigeben über


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 )

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort