pointers_to_members
C++ 仕様
クラス メンバーへのポインターが関連クラス定義の前に宣言することによってポインターを解釈するために必要なポインターのサイズとコードを制御するために使用するかどうかを指定します。
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
解説
/vmx コンパイラ オプションまたは 継承のキーワード を使用する代わりにソース ファイルに pointers_to_members のプラグマを追加できます。
ポインター宣言で 引数は関連付けられた関数定義の前または後にメンバーへのポインターを宣言するかを指定します。 ポインター宣言で 引数は2 種類のシンボルの一つです : 1
引数 |
コメント |
---|---|
full_generality |
nonoptimal セーフ コードを生成します。メンバーに対するポインターでも関連クラス定義の前に宣言すると full_generality を使用します。この引数は 通常表現の 引数で指定されたポインター表現を使用します。/vmg と同じです。 |
best_case |
SAFEすべてのメンバーへのポインターに対して最適なケースの表現を使用して適切なコードを生成します。クラスのメンバーへのポインターを宣言する前にクラスを定義する Requires。既定値は best_case です。 |
通常表現の 引数はクラスのメンバーへのポインターを参照するにはコンパイラが翻訳単位で安全に使用できる最小のポインター表現を指定します。引数には次のいずれかです :
引数 |
コメント |
---|---|
single_inheritance |
一般的な表現は単一継承メンバー関数へのポインターです。メンバーへのポインターが宣言されているクラス定義の継承モデルが複数または仮想はエラーになります。 |
multiple_inheritance |
一般的な表現では多重継承メンバー関数へのポインターです。メンバーへのポインターが宣言されているクラス定義の継承モデルが仮想でエラーが発生します。 |
virtual_inheritance |
一般的な表現は仮想継承メンバー関数へのポインターです。はエラーは加えられません。これは #pragma () full_generality pointers_to_members を使用する場合既定の引数です。 |
注意 |
---|
これは影響を使用すると#include のすべてのディレクティブの後にのみ pointers_to_members のプラグマは表示されたソース・コード ファイルにのみ配置できます。これによりプラグマが他のファイルに影響する場合同じ変数関数またはクラス名に誤って重複定義を指定してリスクの縮小します。 |
使用例
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )