class food{public: void show(void) const = 0;}; //некий абстрактный класс с функцией просмотра списка
class type : public food{}; //1.)
class vegetables : public type{};
class fruits : public type{};
class berries : public type{};
//=================
class color : public food{public: void show(void) const = 0;}; //2.)
class red : public color{};
class pink : public color{};
class blue : public color{}
std::list<type*> mylist;
for (auto it = mylistt.begin(); it != mylist.end(); ++it)
(*it)->show();
class color : public food{public: void show(void) const = 0;}; //2.)
class red : public color{};
class pink : public color{};
class blue : public color{}
#include <iostream>
#include <vector>
class Animal {
public:
virtual void walk() = 0;
virtual ~Animal() {}
};
class Bear : public Animal {
public:
virtual void walk()
{
// walk as bear
std::cout << "bear is walking" << std::endl;
}
};
class Dog : public Animal {
public:
virtual void walk()
{
// walk as dog
std::cout << "dog is walking" << std::endl;
}
};
int main()
{
std::vector<Animal*> animals;
animals.push_back(new Bear());
animals.push_back(new Dog());
for (auto animal : animals) {
animal->walk();
}
for (auto animal : animals) {
delete animal;
}
return 0;
}
Просто проблема в том что найти я должен такой объект выходя из другого "большого" класса
for (auto animal : animals) {
animal->walk();
if(animal->type == Animal::Bear) {
Bear *bear = static_cast<Bear *>(animal);
bear->drinkVodkaWithRussianHuman();
}
}
И,кажется, я признал в записи вашего цикла итератор с msdn и я так понял это аналог моего .begin .end просто "автоматом" смотрит всё.
Тобишь, если думать по аналогии,
вместо "bear->drinkVodkaWithRussianHuman();" я должен вызвать myObject->show();. Надеюсь, я правильно уловил
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();
}
/* ?_1 что вставить под "type" ибо его "голое" использование приводит к естественной ошибке - класс group не содержит члена "type"
?_2 - group::Monarkh выдает что Monarkh не является членом group
Monarkh производный класс от country