2012-03-25 3 views
0

以下のコードに対して、「複合式として扱われる式リスト」というエラーが表示されます。何が間違っているのか分からない?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

私はコードスニペットの空白を修正して、何が起こっているのかを簡単に確認できるようにしました。 –

+0

この質問を見てください:[リンク](http://stackoverflow.com/questions/877107/c-error-member-initializer-expression-list-treated-as-compound-expression) – Vincent

答えて

2

問題はthebulletがポインタであるということですが、あなたはVector2f(700,760), Vector2f(20,45), "bullet" , &bulletFrameでそれを初期化しようとしています。

私はあなたがほしいと思うのはthebullet(new Bullet(...))です。


1.それがある場合、私は強くあなたが生のポインタと手動メモリ管理を使用して、代わりにスマートポインタを調査していないことをお勧めしますが。

+1

'thebulletのように見える新しいスプライト(...)) 'はそれを行うかもしれません(しかし、それは'スプライト 'が何であるかについて単に仮定しています)。 –

+0

ええ、それはhehだった。そんな愚かな間違い。おかげで! –

関連する問題