使用构造函数调用创建新的类引用

时间:2012-10-13 17:44:49

标签: c++

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

那样重新定义它
if (projectile.getX()<=0)
  projectile = new Projectile();
else 
  (projectile.move(x--, y)

我的移动和渲染代码按预期工作,但是现在Projectile会在屏幕上移动一次并消失。

1 个答案:

答案 0 :(得分:1)

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

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