Аргумент передается как целое число? - PullRequest
0 голосов
/ 09 марта 2012
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 Ответ

2 голосов
/ 10 марта 2012

Я не делал "использование пространства имен std;" в заголовочном файле, так что это не было включая вектор, который вызывал много странных ошибок

Вот почему хорошо использовать std :: вместо пространства имен std. Это делает ваш код легче для понимания, и ваш код все равно будет компилироваться, если они когда-нибудь добавят Game или Enemy в STL (вряд ли, я знаю). И это позволит вам добавить свою собственную версию вектора, мин / макс и т. Д., Если вы действительно хотите (хотя я бы не рекомендовал это делать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...