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’
答案 0 :(得分:2)
我没有“使用namespace std;”在头文件上,所以它不是 包括矢量,这导致了很多奇怪的错误
这就是使用std ::而不是使用命名空间std的原因。 它使您的代码更容易理解,如果他们将游戏或敌人添加到STL(不太可能,我知道),您的代码仍然会编译。它可以让你添加你自己的矢量版本,最小/最大等等,如果你真的想(虽然我不推荐)。