property (C++)

Microsoft-spezifisch

Dieses Attribut kann auf nicht statische "virtuelle Datenmember" in einer Klassen- oder Strukturdefinition angewendet werden. Der Compiler behandelt diese "virtuellen Datenmember" als Datenmember, indem er ihre Verweise in Funktionsaufrufe ändert.

Syntax

   __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

Hinweise

Wenn der Compiler ein Mit diesem Attribut auf der rechten Seite eines Memberauswahloperators ("." oder "->") deklariertes Datenelement sieht, konvertiert er den Vorgang in eine get Oder put Funktion, je nachdem, ob ein solcher Ausdruck ein l-Wert oder ein r-Wert ist. In komplizierteren Kontexten, wie z. B. "+=", wird eine Umschreibung sowohl durchgeführt als auch getput.

Dieses Attribut kann in der Deklaration eines leeren Arrays in einer Klassen- oder Strukturdefinition ebenfalls verwendet werden. Beispiel:

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

Die oben genannte Anweisung gibt an, dass x[] mit einem oder mehreren Arrayindizes verwendet werden kann. In diesem Fall wird i=p->x[a][b] in i=p->GetX(a, b) umgewandelt und p->x[a][b] = i in p->PutX(a, b, i);.

Ende Microsoft-spezifisch

Beispiel

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

Siehe auch

__declspec
Schlüsselwörter