作为整数传递的参数

Argument being passed as integer?

本文关键字:参数 整数      更新时间:2023-10-16
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’

我没有在头文件上做"使用命名空间 std;",所以它不是 包括矢量,这导致了很多奇怪的错误

这就是为什么最好使用 std:

: 而不是使用命名空间 std。它使您的代码更易于理解,并且如果将游戏或敌人添加到 STL,您的代码仍将编译(我知道不太可能(。 如果您真的愿意,它将允许您添加自己的矢量版本,最小值/最大值等(不过我不推荐它(。