Я хочу коснуться переменной x, y в классе.
В вашем классе x и y являются частными.Члены классов являются закрытыми по умолчанию.Вы не можете просто установить x и y напрямую, иначе вы получите ошибку компилятора.Вам необходимо предоставить способ установки x и y в общедоступном интерфейсе A, например:
class A
{
int x; int y; // these are by default private
public:
// set X
void setX(int anX) {x = anX;}
// set y
void setY(int aY) {y = aY;}
};
// iterate over preexisting elements
set<A>::iterator iter;
for(iter = myset.begin(); iter != myset.end(); ++iter)
{
iter->x = 5; // COMPILER ERROR, x is private
iter->setX(5); //works, calls setter
iter->setY(6); //works, calls setter
}
Еще одна вещь, которая мешает работе вашего набора, - это отсутствие operator <
для сравнения с экземплярамиО. set
необходимо, чтобы элементы были упорядоченными и уникальными.
class A
{
...
bool operator < (const A& other) const
{
// return true if this < other
// up to you to define
}
};