类中的C ++对象没有给出公共访问权限

时间:2013-12-29 23:40:41

标签: c++

我有这个设置以及我想如何在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对象的私有访问权限,但我不知道如何给它公开访问

1 个答案:

答案 0 :(得分:3)

getPlayerOne引用返回给该私有变量。

Player& getPlayerOne();

然后,您将能够对调用该函数的结果执行操作,并且 stuff 将适用于您班级中的实际原始成员。

现在你正在使用临时副本,而不是由返回。


但是坦率地说,如果你要允许对这个私有变量进行无耻访问,为什么还要为getter烦恼呢?只需将变量公之于众。