我在下面的代码中收到以下错误:“表达式列表被视为复合表达式”。我找不到什么问题?

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&);

最佳答案

问题是thebullet是一个指针,但是您尝试使用Vector2f(700,760), Vector2f(20,45), "bullet" , &bulletFrame对其进行初始化。

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


1.尽管是,但我强烈建议您不要使用原始指针和手动内存管理,而应研究智能指针。

08-06 00:34