我有一个名为woodyard
的班级。里面有一个名为collect_wood
的方法。它的参数是Player
对象。每次调用时,该方法都会向player.wood_resource
添加1。
我在这个主要使用它:
for(int i = 0; i < woodyards.size(); i++)
{
woodyards[i].collect_wood(p1);
}
p1是玩家对象。
这是collect_wood方法:
void woodyard::collect_wood(Player player)
{
player.wood_resource++;
}
运行时wood_resource
没有效果。
请帮忙。我使用CodeBlocks在C ++中编码
答案 0 :(得分:8)
你应该在这里使用参考。
void woodyard::collect_wood(Player& player)
{
player.wood_resource++;
}
因为在你的情况下 - 你增加wood_resource
副本。
答案 1 :(得分:0)
以参考呼叫方式进行。您的代码执行的操作,每次都会创建新的Player
,而不是修改旧代码。
void woodyard::collect_wood(Player& player)
{
player.wood_resource++;
}
注意&
void woodyard::collect_wood(Player& player)
您可以通过参考here
了解有关函数调用的更多信息答案 2 :(得分:0)
默认情况下,函数是按值调用的(有异常)。如果您需要更改原始副本而不是临时对象,则需要使用参考或指针。
您可以使用以下两种功能:
void woodyard::collect_wood(Player& player)
{
player.wood_resource++;
}
OR
void woodyard::collect_wood(Player *player)
{
if(player)
{
*player.wood_resource++;
}
}