2012-03-25 182 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