std::list<group*> myGroup;
//то что хочу вытянуть
myGroup.push_back(new Monarkh(5));
myGroup.push_back(new Monarkh(10));
myGroup.push_back(new Rome(125));
//некий излишек
myGroup.push_back(new kingdom(0));
myGroup.push_back(new northAmerica(0));
for (auto group : myGroup) {
group->show();
}
for (auto group : myGroup) {
delete group;
}
for (auto group : myGroup) {
group->show();
if (group->?_1 == group::Monarkh) { /* ?_1 что вставить под "type" ибо его "голое" использование приводит к естественной ошибке - класс group не содержит члена "type"
?_2 - group::Monarkh выдает что Monarkh не является членом group
Monarkh производный класс от country, но использование country::Monarkh так же ведет к ошибке. Что я тут упускаю ? */
std::cout << "Поймал монархов" << std::endl;
Monk *monk = static_cast<Monk *>(group);
monk->show();
}
class color : public food{public: void show(void) const = 0;}; //2.)
class red : public color{};
class pink : public color{};
class blue : public color{}
Таки я на этом и остановился - добавить type , но какой ? Повторюсь, конкретно хотел запустить область,допустим, А и в ней монарх 5, область B в ней монарх 15. Что-то в таком ключе, но вот, увы, не могу с эти type что-то сообразить. Тогда так рассуждать в type я вгоню какой-нибудь номер области 1, 2 (А, В) соотвественно. Тогда запрос 1 выдать должен 5, но как он должен среагировать что мой созданный монарх "5" будет относиться именно к 1, а не 2 области или какой-либо другой ?
country::Monarkh тоже "кушать" не хочет (нет члена, как и при попытке с group::M)