【发布时间】:2014-03-10 10:45:06
【问题描述】:
我发现了一个与这个问题类似的问题,尽管其提出的方式比我认为我需要的更复杂(问题得分为 -2)。希望这会更容易理解。
事情的一般要点是所涉及的两个类是 GUI 和 Player(我在其他类的其他地方也遇到过同样的问题,但如果我能理解为什么这个不起作用,它应该适用于其余类) .
GUI 包括“Player.h”。 Player 类有一个公共布尔变量“hasBall”;当“播放器”被传递到函数 Pass() 并且布尔值发生更改时,它似乎只是一个临时对象,因此不会更新正在传递的对象本身。见以下代码:
这很好用,Plyr1A 和 Plyr2A(在 Gui.h 中定义)的布尔值被更改并保留
Plyr1A.hasBall = false;
Plyr2A.hasBall = true;
但是 Plyr1A 和 Plyr2A 的布尔值与此保持不变。
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;
}
如果有人能向我解释为什么会发生这种情况,我将不胜感激!如果需要任何额外的信息,请告诉我。
干杯:)
【问题讨论】:
标签: c++ function class variables public