pointers_to_members
C++ specifica
Specifica se un puntatore A un membro di classe può essere dichiarata prima della definizione della classe associata e viene utilizzato per controllare la dimensione del puntatore e il codice necessari per interpretare il puntatore.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Note
È possibile inserire un oggetto pointers_to_members pragma nel file di origine come alternativa a l /vmx opzioni del compilatore o parole chiave di ereditarietà.
puntatore-dichiarazione l'argomento indica se è stato dichiarato un puntatore a un membro prima o dopo la definizione di funzione associata.puntatore-dichiarazione l'argomento è uno dei seguenti due simboli:
Argomento |
Commenti |
---|---|
full_generality |
Genera codice sicuro e talvolta nonoptimal.Utilizzare full_generality se un puntatore a un membro è dichiarata prima della definizione della classe associata.Questo argomento contiene sempre la rappresentazione del puntatore specificata da più-generale-rappresentazione argomento.equivalente a /vmg. |
best_case |
Genera codice sicuro e ottimale utilizzando la rappresentazione del caso migliore per i puntatori ai membri.Requires che definisce la classe prima della dichiarazione di puntatore a un membro della classe.l'impostazione predefinita è best_case. |
più-generale-rappresentazione l'argomento indica la più piccola rappresentazione del puntatore che il compilatore possa utilizzare in modo sicuro per fare riferimento a un puntatore A un membro di una classe in un'unità di conversione.L'argomento può essere:
Argomento |
Commenti |
---|---|
single_inheritance |
La rappresentazione più generale è singolo-ereditarietà, puntatore a una funzione membro.Genera un errore se il modello di ereditarietà della definizione della classe per il quale un puntatore a un membro è dichiarato è mai più o virtuale. |
multiple_inheritance |
La rappresentazione più generale è ereditarietà multipla, puntatore a una funzione membro.Genera un errore se il modello di ereditarietà della definizione della classe per il quale un puntatore a un membro viene dichiarato virtuale. |
virtual_inheritance |
La rappresentazione più generale è virtuale-ereditarietà, puntatore a una funzione membro.non causa mai un errore.Si tratta dell'argomento predefinito quando pointers_to_members #pragma (full_generality) viene utilizzato. |
Attenzione |
---|
Si consiglia di inserire pointers_to_members pragma solo nel file di codice sorgente che si desidera modificare e solo dopo qualsiasi #include direttive.Questa pratica diminuisce il rischio che il pragma influirà su altri file e specificati accidentalmente più definizioni per la stessa variabile, funzione, o nome della classe. |
Esempio
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )