• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Реализация стратегии на классах

  • Автор темы mahsus
  • Дата начала
M

mahsus

Добрый день!
Помогите начинающему. Пишу реализацию игры "Генералы" на классах. Написал класс Military, от которого наследовал классы:
BuildItem - что-то строит; MilitItem - во что-то стреляет;
Для MilitItem определил ф-цию Fire() и цель Military *Purpose;
Для BuildItem определил ф-цию Build() и цель Military *Purpose;
От класса MilitItem наследую: классы Пехота, Танк, Ракетница, Самолет - стреляют по всем объектам Military;
От класса BuildItem наследую: классы
Барак - "строит" объект класса пехота;
Военный завод - "строит" объект класса Танк, Ракетницу;
Аэродром - "строит" объект класса самолет ;
Подскажите прийом как мне указать, возьмем один пример, что Военный завод может строить только Танк и Ракетницу, унаследованные от класса MilitUnit, когда есть другие классы (пехота, самолет) тоже унаследованные от того же класса MilitUnit?
Как это делается?
И, следовательно вопрос второй следует из первого:
Например, объект класса "Военный завод" может строить объекты "Танк" и "Ракетница". Есть ф-ция Build(), которая строит переданный объект,т.е. создает. Пустые скобки означают, что я не знаю что за параметр передавать функции, чтобы она создала например объект класса "танк" (... = new ...;). Как передать тип объекта, который нужно создать.
Подскажите пожалуйста механизм такой обработки.
Буду очень благодарен за ответ.
 
G

grigsoft

Ну можно использовать. Но он не всеми компиляторами нормально поддерживается. В MFC смотреть на CRuntimeClass.
Я бы добавил метод GetStructuresNumber() - вернет число поддерживаемых структур. Отдавать объект тогда по индексу. Но учитывая возможные потребности информации о создаваемом объекте, можно сделать промежуточный класс СStructureFactory <- CTankFactory который будет собственно создавать нужный объект и отдавать нужную информацию о нем. Build будет возвращать СStructureFactory.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!