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;
}

Voir aussi

__declspec
Mots clés