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 get
put
.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für