property (C++)
Microsoft-spezifisch
Dieses Attribut kann auf nicht statische Datenmember virtuellen „“ in einer Klassen- oder Strukturdefinition angewendet werden.Der Compiler behandelt diese virtuellen „als Datenmember“ Datenmember, indem Sie ihre Verweise in Funktionsaufrufe ändert.
__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 einen Datenmember, der diesem Attribut wird auf der rechten Seite eines Operators Auswahl Member deklariert ist („.“ oder „- >"), konvertiert sie den Vorgang zu einer get oder put-Funktion, abhängig davon, ob ein solcher Ausdruck ein l-Wert oder einen R-Wert entspricht.In den schwierigeren Kontexten, z. B. „+=“, wird eine Neufassung ausgeführt, indem get und putausführt.
Dieses Attribut kann in der Deklaration eines leeren Arrays in einer Klassen- oder Strukturdefinition ebenfalls verwendet werden.Beispiele:
__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] zu i=p->GetX(a, b)gemacht, und p->PutX(a, b, i);gemacht wird p->x[a][b] = i
Microsoft ENDES bestimmten
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;
}