Mam pytanie odnośnie funkcji get i set. Oczywiście pierwsza pobiera dany element klasy druga ustawia. Może przedstawię problem na przykładzie.
struct Position
{
int x;
int y;
};
class Object
{
private:
Position position1;
Position *position2;
public:
Object(void);
~Object(void);
Position getPosition1()
{
return position1;
}
Position* getPosition2()
{
return position2;
}
void setPosition1(Position _position1)
{
position1 = _position1;
}
void setPosition2(Position* _position2)
{
position2 = _position2;
}
void setPosition1(int x, int y)
{
position1.x = x;
position1.y = y;
}
void setPosition1X(int x)
{
position1.x = x;
}
void setPosition1Y(int y)
{
position1.y = y;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Object object;
Position p;
p.x = 100;
p.y = 200;
object.setPosition1(p);
object.setPosition1(101,201);
object.setPosition1X(102);
object.setPosition1Y(202);
object.getPosition1().x = 3; //Error 1 error C2106: '=' : left operand must be l-value
object.getPosition1().y = 3; //Error 1 error C2106: '=' : left operand must be l-value
object.getPosition2()->x = 2; // Tu błędu nie ma
object.getPosition2()->y = 3; // Tu błędu nie ma
object.setPosition2(&p);
printf("Position1 - x = %d, y = %d\n",object.getPosition1().x, object.getPosition1().y);
printf("Position2 - x = %d, y = %d\n",object.getPosition2()->x, object.getPosition2()->y);
system("pause");
return 0;
}
Posiadam klase Object która posiada obiekt struktury Position oraz wskaźnik do obiektu struktury Position, przy odwołaniu sie poprzez metodę getPosition().x oraz getPosiotion().y pojawia mi sie błąd Error 1 error C2106: '=' : left operand must be l-value natomiast gdy odwołuje sie do elementów struktury Position przy pomocy wskaźnika wszystko jest ok. Problem w tym, że ja muszę mieć osobny dostęp do zmiany poszczególnych elementów struktury Position. Dla czego przy próbie dostępu do zmiennych za pomocą obiektu Position position pojawia mi sie błąd natomiast przy próbie dostępu za pomocą wskaźnika Position *position wszystko jest ok.