Condividi tramite


property (C++)

Sezione specifica Microsoft

L'attributo può essere applicato ai "membri dati virtuali" non statici in una definizione di classe o struttura. Il compilatore considera questi "membri dati virtuali" come membri dati modificando i riferimenti nelle chiamate di funzione.

__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

Note

Quando il compilatore rileva un membro dati dichiarato con questo attributo a destra di un operatore di selezione dei membri ("." o "->"), converte l'operazione in una funzione put o get, a seconda se tale espressione è un l-value o un r-value. In contesti più complessi, ad esempio "+=", una riscrittura viene eseguita utilizzando sia get che put.

Questo attributo può anche essere utilizzato in una dichiarazione di una matrice vuota in una definizione di classe o struttura. Ad esempio:

__declspec(property(get=GetX, put=PutX)) int x[];

L'istruzione sopra indica che x[] può essere utilizzato con uno o più indici di matrice. In questo caso, i=p->x[a][b] si trasformerà in i=p->GetX(a, b) e p->x[a][b] = i si trasformerà in p->PutX(a, b, i);

Fine sezione specifica Microsoft

Esempio

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

Vedere anche

Riferimenti

__declspec

Parole chiave C++