Хранение экземпляров в векторе - PullRequest
0 голосов
/ 11 мая 2018

Что я хочу сделать, это создать несколько экземпляров класса Enemy без необходимости создавать каждый из них по отдельности.

Как лучше всего это сделать, используя массив или вектор?

/// КОД ЗДЕСЬ:

  void GameLoop(SDL_Window* Window, SDL_Renderer* Renderer)
  {
    //CREATE ENEMIES
    Enemy* Enemy_1 = new Enemy(Renderer, "S_Alien_1.bmp", 200, 100, 50, 35);
    Enemy* Enemy_2 = new Enemy(Renderer, "S_Alien_1.bmp", 260, 100, 50, 35);

    //CALL UPDATE FUNCTION OF ENEMY CLASS
    Enemy_1->Update();
    Enemy_2->Update();

    //CALL DRAW FUNCTION OF ENEMY CLASS
    Enemy_1->Draw();
    Enemy_2->Draw();

  }

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Использовать конструктор векторной заливки:

Вместо 100 вы можете использовать любое число.

std::vector<Enemy> enemies(100, Enemy(Renderer, "S_Alien_1.bmp", 200, 100, 50, 35));
0 голосов
/ 11 мая 2018

лучшим способом будет вектор для вашей игры. Лучше всего определить врага за пределами цикла, а затем запустить цикл столько раз, сколько вы хотите, чтобы враги

std::vector <Enemy*> eList;

Enemy* enemy;
for(int i =0; i < eCount;i++){
enemy = new Enemy(blah);
eList.push_back(enemy);
enemy = nullptr;
}

тогда каждый раз, когда вы хотите получить доступ к функции экземпляра, вы можете ссылаться на то, что она есть в списке for, или, если вы хотите получить доступ ко всем из них, вы можете сделать a для каждого цикла

for each(Enemy* e in eList){
    e->function;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...