__declspec(property)
カテゴリ
構文
__declspec( property( get=get_func_name ) ) declarator __declspec( property( put=put_func_name ) ) declarator __declspec( property( get=get_func_name, put=put_func_name ) ) declarator
メモ: __declspec(property) 指定子は、Microsoft との互換性を保つためにサポートされています。このページは MSDN ページを手直ししたもので、ご参考までに提供しています。RAD Studio ライブラリの場合は、C++Builder の拡張キーワード __property を使用してください。
この属性は、クラス定義または構造体定義における静的でない "仮想データ メンバ" に適用することができます。コンパイラは、参照を関数呼び出しに変換することで、これらの "仮想データ メンバ" をデータ メンバとして扱います。
この属性を付けて宣言されたデータ メンバがメンバ選択演算子("." または "->")の右側にあると、コンパイラは、式が左辺値か右辺値かに応じて、演算を get 関数または put 関数に変換します。"+=" のようなもっと複雑な状況では、get と put を両方とも行うことで、書き換えが実行されます。
この属性は、クラス定義または構造体定義における空の配列の宣言でも使用することができます。
例
__declspec(property(get=GetX, put=PutX)) int x[];
上記の文は、x[] が 1 つ以上の配列インデックスと共に使用できることを示しています。この場合、
i=p->x[a][b];
これは次のように変換されます。
i=p->GetX(a, b);
また、
p->x[a][b] = i;
これは次のように変換されます。
p->PutX(a, b, i);