我有这个设置以及我想如何在main中使用它,例如:
struct Player{
private:
float posX1, posX2, posY1, posY2;
int user_id;
public:
Player::Player():posX1(NULL), posY1(NULL), posX2(NULL), posY2(NULL){};
float getPosX1();
float getPosY1();
float getPosX2();
float getPosY2();
int getUserId();
void setUserId(int);
void setPosX1(float);
void setPosY1(float);
void setPosX2(float);
void setPosY2(float);
};
struct Room_Data{
private:
int room_id;
Player player_one, player_two;
bool playerOneAlive, playerTwoAlive;
public:
Room_Data::Room_Data():player_one(), player_two(), playerOneAlive(false), playerTwoAlive(false), room_id(NULL){};
void setRoomId(int);
int getRoomId();
void setPlayerOneDead();
void setPlayerOneAlive();
void setPlayerTwoDead();
void setPlayerTwoAlive();
bool isPlayerOneAlive();
bool isPlayerTwoAlive();
Player getPlayerOne();
Player getPlayerTwo();
};
我正在尝试在main中使用以下方法,例如:
main.cpp
const int x=10;
Room_Data data[x];
data[0].getPlayerOne().setPosX1(10.0f);
但它没有设置posx1因为getPlayerOne()只提供了player_one对象的私有访问权限,但我不知道如何给它公开访问
答案 0 :(得分:3)
让getPlayerOne
将引用返回给该私有变量。
Player& getPlayerOne();
然后,您将能够对调用该函数的结果执行操作,并且 stuff 将适用于您班级中的实际原始成员。
现在你正在使用临时副本,而不是由值返回。