Форум программистов, компьютерный форум CyberForum.ru

stl и полиморфизм - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
21.01.2012, 15:05     stl и полиморфизм #1
Всем доброго времени суток, возник такой вопрос не знаю как реализовать,
имеется 4 класса.
Базовый Object он имеет поля x и y от него наследуется класс Enemy он имеет метод Draw -прорисовка, от этого класса наследуется ещё 2 класса Bomber и destroyer они имеют методы Update которые обновляют координаты объекта а также имеют булеву переменную alive которая проверяет жив ли объект,
в main я использую такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CDestroyer destr[3];
    destr[0].Init(300,200,0,0,32,32,"images\\Enemies\\destrojer.bmp",1,2);
    destr[1].Init(370,200,0,0,32,32,"images\\Enemies\\destrojer.bmp",1,2);
    CBomber bomber;
    bomber.Init(400,300,0,0,32,32,"images\\Enemies\\bomber.bmp",1,2);
    CEnemy **enemy;
    enemy=new CEnemy*[3];
    enemy[0]=&destr[0];
    enemy[1]=&destr[1];
    enemy[2]=&bomber;
while(true)
{
               enemy[0]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
           enemy[1]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
           enemy[2]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
                enemy[0]->Draw(buffer);
        enemy[1]->Draw(buffer);
        enemy[2]->Draw(buffer);
 
}
Как это реализовать с помощью очереди(думаю она здесь подойдёт как нельзя лучше)
а также если у объекта alive=false, то чтоб этот объект удалился.
STL юзал буквально несколько раз, поэтому незнаю как это можно провернуть.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 15:05     stl и полиморфизм
Посмотрите здесь:

Полиморфизм C++
Полиморфизм :( C++
C++ Полиморфизм
Полиморфизм c++ C++
C++ Полиморфизм
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
21.01.2012, 18:55  [ТС]     stl и полиморфизм #21
А как это полечить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.01.2012, 18:59     stl и полиморфизм #22
например складывать все сразу в вектор без всяких промежуточных массивов.

C++
1
2
3
4
5
6
7
8
9
10
11
std::vector <shared_ptr<CEnemy>> lst;
shared_ptr<CDestroyer> destroyer;
destroyer.reset(new CDestroyer());
destroyer->Init(...);
lst.push_back(destroyer); // тут возможно понадобится явное преобразование в shared_ptr<CEnemy>
 
destroyer.reset(new CDestroyer());
destroyer->Init(...);
lst.push_back(destroyer);
 
//тут то же самое для бомбера
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 19:22     stl и полиморфизм
Еще ссылки по теме:

Полиморфизм C++
C++ STL и полиморфизм
C++ Полиморфизм

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
21.01.2012, 19:22  [ТС]     stl и полиморфизм #23
Спасибо работает, а как теперь удалить? при alive == false
Попробовал тем методом что вы писали, не получается...

Добавлено через 11 минут
Всем спасибо за ответы, с удалением разобрался,
надо было так
C++
1
2
3
4
5
if((*iter)->alive==false)
        {
            lst.erase(iter);
            break;
        }
Yandex
Объявления
21.01.2012, 19:22     stl и полиморфизм
Ответ Создать тему
Опции темы

Текущее время: 04:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru