property (C++)
Только для систем Microsoft
Этот атрибут можно применять к нестатический "фактически элементам данных" в определении класса или структуры.Компилятор рассматривает эти виртуальные элементы данных" "в качестве элементов данных, изменив их ссылки в вызовы функций.
__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
Заметки
Когда компилятор, см. элемент данных, объявленный с этим атрибутом, которая находится справа от оператора участник-выделения ("."или"- >"), она преобразует операции к a получить OR ПОМЕСТИТЕ функция, в зависимости от того, такое выражение l-значение или правостороннего значения.В более осложненных контекстах, например "+="переработанный версий осуществляется посредством внесения оба получить и ПОМЕСТИТЕ.
Этот атрибут также может использоваться в объявлении пустого массива в определении класса или структуры.Примеры.
__declspec(property(get=GetX, put=PutX)) int x[];
На выписку показано выше, x[] может использоваться с одним или несколькими индексами массива.В этом случае i=p->x[a][b] станет в i=p->GetX(a, b)и p->x[a][b] = i станет в p->PutX(a, b, i);
ЭЛЕМЕНТ, относящийся Майкрософт
Пример
// 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;
}