Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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. Zum 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;
}