被调用的方法无法使用C++

Called method is not working C++

本文关键字:C++ 调用 方法      更新时间:2023-10-16

我有一个名为woodyard的类。里面有一个叫做collect_wood的方法。它的参数是一个Player对象。该方法每次被调用时都会将1添加到player.wood_resource

我主要这样使用它:

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++进行编码

您应该在此处使用引用。

void woodyard::collect_wood(Player& player)
{
  player.wood_resource++;
}

因为在您的情况下-您增加副本的wood_resource

按引用调用。您的代码每次都会创建新的Player,而不是修改旧的。

void woodyard::collect_wood(Player& player)
{
  player.wood_resource++;
}

注意void woodyard::collect_wood(Player& player) 中的&

您可以在此处阅读更多关于函数调用的参考信息

默认情况下,函数是按值调用的(也有例外)。如果需要更改原始副本而不是临时对象,则需要使用引用指针

你的两个功能中的任何一个:

void woodyard::collect_wood(Player& player)
{
  player.wood_resource++;
}

void woodyard::collect_wood(Player *player)
{
  if(player)
  {
     *player.wood_resource++;
  }
}