参数作为整数传递?

时间:2012-03-09 18:45:37

标签: c++ vector

class Game {
  public:
    void draw_string(const char *text, int x, int y, TTF_Font *font, SDL_Color color, bool center);

  private:
    void spawn_enemies(vector <Enemy*>& enemies);
};

我将它作为类的定义,spawn_enemies的定义如下:

void Game::spawn_enemies(vector <Enemy*>& enemies) {
  if (rand() % difficulty == 0) {
    Enemy *enemy = new Enemy(screen, zombie_image);
    enemies.push_back(enemy);
  }
}

然后我打电话给spawn_enemies:

game.spawn_enemies(enemies);

我将敌人定义为:

vector<Enemy*> enemies;

我知道为什么会收到此错误:

error: no matching function for call to ‘Game::spawn_enemies(std::vector<Enemy*>&)’            
note: candidate is:
note: void Game::spawn_enemies(int)
note:   no known conversion for argument 1 from ‘std::vector<Enemy*>’ to ‘int’

1 个答案:

答案 0 :(得分:2)

  

我没有“使用namespace std;”在头文件上,所以它不是   包括矢量,这导致了很多奇怪的错误

这就是使用std ::而不是使用命名空间std的原因。 它使您的代码更容易理解,如果他们将游戏或敌人添加到STL(不太可能,我知道),您的代码仍然会编译。它可以让你添加你自己的矢量版本,最小/最大等等,如果你真的想(虽然我不推荐)。