2012-03-25 3 views
0

Ich erhalte den folgenden Fehler für den Codeabschnitt unten: "Ausdrucksliste, die als zusammengesetzter Ausdruck behandelt wird". Ich kann nicht herausfinden, was falsch ist?C++ - Konstruktorfehler

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) 
      { 

      } 

ERKLÄRUNGEN:

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

Ich habe den Leerraum in Ihrem Code-Snippet geändert, damit Sie besser sehen können, was passiert. –

+0

Werfen Sie einen Blick auf diese Frage: [link] (http://stackoverflow.com/questions/877107/c-error-member-initializer-expression-list-treated-as-compound-expression) – Vincent

Antwort

2

Das Problem ist, dass thebullet ein Zeiger ist, aber Sie versuchen, es mit Vector2f(700,760), Vector2f(20,45), "bullet" , &bulletFrame zu initialisieren.

Meine Vermutung ist, dass Sie thebullet(new Bullet(...)) wollen.


1. Obwohl, wenn es ist, ich, dass Sie dringend empfohlen, keine rohen Zeiger und manuelle Speicherverwaltung verwenden und stattdessen intelligente Zeiger untersuchen.

+1

Sieht aus wie 'thebullet (neuer Sprite (...)) 'könnte es tun (aber das ist nur eine Vermutung darüber, was ein' Sprite' sein könnte). –

+0

Ja, das ist es heh. So ein dummer Fehler. Danke! –