property (C++)
Section spécifique à Microsoft
Cet attribut peut être appliqué à des « données membres virtuelles » non statiques dans une définition de classe ou de structure. Le compilateur traite ces « données membres virtuelles » comme des données membres en changeant leurs références en appels de fonction.
Syntaxe
__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
Notes
Lorsque le compilateur voit un membre de données déclaré avec cet attribut à droite d’un opérateur de sélection de membre (« . » ou « ->« ), il convertit l’opération en une get
ou put
une fonction, selon qu’une telle expression est une valeur l ou une valeur r. Dans des contextes plus compliqués, tels que «+=
», une réécriture est effectuée en effectuant à la fois get
et put
.
Cet attribut peut également être utilisé dans la déclaration d'un tableau vide dans une définition de classe ou de structure. Par exemple :
__declspec(property(get=GetX, put=PutX)) int x[];
L'instruction ci-dessus indique que x[]
peut être utilisé avec un ou plusieurs index de tableau. Dans ce cas, i=p->x[a][b]
est converti en i=p->GetX(a, b)
et p->x[a][b] = i
est converti en p->PutX(a, b, i);
FIN de la section spécifique à Microsoft
Exemple
// 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;
}