property (C++)
Microsoft 固有の仕様 →
この属性はクラスまたは構造体の定義の非静的データ メンバー仮想 「」にも適用できます。コンパイラはデータ メンバーとしての関数呼び出しに対して参照を変更してこれらの仮想 「データ メンバーを処理します。
__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(get=GetX, put=PutX)) int x[];
このステートメントは x[] 配列が一つ以上のインデックスで使用できることを示します。この場合i=p->x[a][b] は i=p->GetX(a, b) に回転p->x[a][b] = i はになります p->PutX(a, b, i);
終了 Microsoft 固有の仕様→
使用例
// declspec_property.cpp
struct S {
int i;
void putprop(int j) {
i = j;
}
int getprop() {
return i;
}
__declspec(property(get = getprop, put = putprop)) int the_prop;
};
int main() {
S s;
s.the_prop = 5;
return s.the_prop;
}