gpt4 book ai didi

c++ - 在函数 c++ 中更改时不保留类的公共(public)变量

转载 作者:行者123 更新时间:2023-11-30 01:18:59 25 4
gpt4 key购买 nike

我发现了一个与此问题有点相似的问题,但其提出的方式比我认为我需要的更复杂(问题得分为 -2)。希望这会更容易理解。

事情的一般要点是涉及的两个类是 GUI 和 Player(我在其他地方遇到过与其他类相同的问题,但如果我能理解为什么这个不起作用,它应该适用于其余部分) .

GUI 包括“Player.h”。 Player 类有一个公共(public) bool 变量“hasBall”;当“玩家”被传递到函数 Pass() 并且 bool 值发生变化时,它似乎只是一个临时对象,因此不会更新被传递的对象本身。见下面的代码:

这很好用,Plyr1A 和 Plyr2A 的 bool 值(在 Gui.h 中定义)已更改并保留

Plyr1A.hasBall = false; 
Plyr2A.hasBall = true;

然而,Plyr1A 和 Plyr2A 的 bool 值与此保持不变。

Pass(Plyr1A,Plyr2A);  //Boolean values for Plyr1A and Plyr2A remain the same with this.

void GUI::Pass(Player passer, Player receiver) {
passer.hasBall = false;
receiver.hasBall = true;
}

如果有人能向我解释为什么会发生这种情况,我将不胜感激!如果需要任何额外信息,请告诉我。

干杯:)

最佳答案

您的函数复制参数(它们按值传递),然后更改拷贝,而不是“原始”对象(在函数主体中)。

您应该将其更改为采用指针或引用,例如:

//-------------------v---------------v   <---these are references
void GUI::Pass(Player& passer, Player& receiver) {

当然,您也应该更改声明。

关于c++ - 在函数 c++ 中更改时不保留类的公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21722333/

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