Вообщем, дружан подкинул мне такую задачку...
Представим, что у нас имеется класс:
Код: Выделить всё
class A
{
private:
int data;
public:
A():data(0){};
int getData() {return data;}
void setData(int _data) {data=_data;}
}
Вот, каким образом мы обращаемся к переменной data? Через функции доступа - getData и setData, т.е. примерно так:
Код: Выделить всё
A x;
x.setData(2005);
cout<<x.getData();
Код: Выделить всё
A* y=new A;
y->setData(2005);
cout<<y->getData();
Код: Выделить всё
x.data=2005;
y->data=2005;
Но тут возникает одно НО: нужен контроль за тем, что присваивается нашей переменной... Ну, если мы используем функцию доступа, то все просто:
Код: Выделить всё
...
void setData(int _data)
{
if (f(_data)) data=_data;
}
...
Код: Выделить всё
bool f(int arg) {if (arg%2==0) return true; else return false;}
Вопрос в том, как сделать это, чтобы синтаксис работы с классом был такой:
A a;
a.data=10; // переменная изменится и станет равной 10
a.data=-7; // переменная не изменится, и останется равной 10
???