В С++ для атрибутов класса можно задавать свойства, шаблон определения которых -
__declspec( property( get=get_func_name, put=put_func_name ) ) declarator
Есть класс, суть которого - работа с координатами
class Object
{
public:
__declspec(property(get = getX, put = putX)) unsigned x;
__declspec(property(get = getY, put = putY)) unsigned y;
private:
unsigned getX() const { return _x; }
unsigned getY() const { return _y; }
void putX(unsigned x) { _x = x; }
void putY(unsigned y) { _y = y; }
unsigned _x, _y;
};
И при попытке использовать его
int main()
{
Object a;
a.x = 0;
}
получаю ошибку
"Object::putX: невозможно обратиться к private-члену".
Если сделать методы публичными, ошибка пропадает, как и часть мотивации использовать свойства: с таким же успехом можно использовать и сами методы. Есть вариант избежать ошибки, оставив методы, как и атрибуты, недоступными в дальнейшей работе с классом?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь в конструкторе B вызвать слот A::toExit()Как исправить ошибку?
Изначально есть бинарный файлМне полностью известна его структура
Найдите количество правильных несократимых дробей, не превосходящих X, знаменатель которых не превосходит NОграничения: 2 <= N <= 100000