2012-03-25 137 views
0

Im下面的代码获取以下错误:“表达式列表视为复合表达式”。我无法找出什么是错的?C + +构造函数错误

Shoot::Shoot() : 
    io(IOManager::getInstance()), 
    count(0), 
    locX(0), 
    locY(0), 
    objWidth(0), 
    objHeight(0), 
    clock(Clock::getInstance()), 
    ticks(0), 
    bulletSurface(io.loadAndSet("images/bullet.bmp", true)), 
    bulletFrame(bulletSurface, 30, 30, 0, 0), 
    thebullet(Vector2f(700,760), Vector2f(20,45), "bullet" , &bulletFrame) 
      { 

      } 

声明:

private : 

      const IOManager& io; 
      int count; 

      int locX; 
      int locY; 
      unsigned objWidth; 
      unsigned objHeight; 
      Clock& clock; 
      unsigned ticks; 
      SDL_Surface *bulletSurface; 
      Frame bulletFrame; 
      Sprite *thebullet; 
      Shoot(const Shoot&); 
      Shoot& operator=(const Shoot&); 
+0

我修改了代码段中的空白,以便更容易地看到发生了什么。 – 2012-03-25 22:50:16

+0

看看这个问题:[链接](http://stackoverflow.com/questions/877107/c-error-member-initializer-expression-list-treated-as-compound-expression) – Vincent 2012-03-25 22:50:57

回答

2

的问题是,thebullet是一个指针,但你试图用Vector2f(700,760), Vector2f(20,45), "bullet" , &bulletFrame初始化它。

我的猜测是你想要thebullet(new Bullet(...))


1.虽然如果是,我强烈建议您不要使用原始指针和手动内存管理,而是探讨智能指针。

+1

看起来像'thebullet(新的Sprite(...))'可能会做到这一点(但这只是对'Sprite'的一个假设)。 – 2012-03-25 22:53:22

+0

是的,它做到了。这样一个愚蠢的错误。谢谢! – 2012-03-25 22:59:48