gpt4 book ai didi

类中类的 C++ 对象未授予公共(public)访问权限

转载 作者:行者123 更新时间:2023-11-30 02:50:00 25 4
gpt4 key购买 nike

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

最佳答案

通过让 getPlayerOne 返回对该私有(private)变量的引用

Player& getPlayerOne();

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

由于按 返回,现在您正在对临时拷贝进行操作。


不过,坦率地说,如果您要允许毫不掩饰地访问这个私有(private)变量,为什么还要为 getter 而烦恼呢?只需将变量公开即可。

关于类中类的 C++ 对象未授予公共(public)访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com