property (C++)
Specifické pro Microsoft
Tento atribut lze použít pro nestatické "virtuální datové členy" v definici třídy nebo struktury.Kompilátor zpracovává tyto "virtuální datové členy" jako datové členy změnou jejich odkazů na volání funkce.
__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
Poznámky
Když kompilátor narazí na datový člen deklarovaný pomocí tohoto atributu na pravé straně operátoru výběr členů ("." nebo "–>"), převede operaci na funkci get nebo put, v závislosti na tom, je-li tento výraz l hodnota nebo r hodnota.U více komplikovaných kontextů, jako je "+=", je provedena revize pomocí get a put.
Tento atribut lze použít také v deklaraci prázdného pole v definici třídy nebo struktury.Příklad:
__declspec(property(get=GetX, put=PutX)) int x[];
Výše uvedený příkaz označuje, že x[] lze použít s jedním nebo více indexů pole.V tomto případě bude i=p->x[a][b] převeden na i=p->GetX(a, b) a p->x[a][b] = i bude převeden na p->PutX(a, b, i);
Specificka produktu Microsoft END
Příklad
// 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;
}