在我的游戏中,我有一个Projectile类,该类最初在屏幕的右侧(高电平或低电平)生成(在构造函数中随机选择)。 Projectile自动移动到屏幕的左侧,当它离开屏幕的左侧时,我想用构造函数创建的新Projectile重新定义现有变量。但是,我似乎无法正常工作。我尝试将其定义为Projectile *projectile,但随后我的代码抛出“表达式必须具有类类型”错误。我该如何重新定义

if (projectile.getX()<=0)
  projectile = new Projectile();
else
  (projectile.move(x--, y)

我的移动和渲染代码按预期工作,但现在Projectile遍历屏幕一次,然后消失了。

最佳答案

projectile = new Projectile()行的问题在于,表达式new Projectile()的返回值是Projectile*,而不是Projectile对象。然后,您尝试将其分配给Projectile对象,但这将无法正常工作。

如果您不想将代码转换为使用指针,则应该可以通过用projectile = Projectile()替换该行来编译代码。另一种选择是添加一个成员函数,该函数将Projectile对象重置为其默认状态。如果射弹对象的构造和复制成本很高,则后者可能非常有益。

09-27 23:08