В ответ на этот вопрос Vector/Container, состоящий из различных производных объектов в C++ Я попытался улучшить свой код. Теперь я храню указатели на свои производные объекты в одном векторе, но я не уверен, как затем получить доступ к их функциям-членам производного класса и разбить один вектор на подвекторы каждого соответствующего производного типа.
#include <vector>
#include <memory> // for unique_ptr
#include <iostream>
using namespace std;
class Fruit {};
class Banana: public Fruit { void cout_banana() { cout << "i am a banana" << endl; } };
class Apple : public Fruit { void cout_apple() { cout << "i am an apple" << endl; } };
class FruitBox
{
vector<unique_ptr<Banana>> vec_banana;
vector<unique_ptr<Apple>> vec_apple;
public:
FruitBox(const vector<unique_ptr<Fruit>> &fruits)
{
for (const unique_ptr<Fruit> &f : fruits)
{
// How to figure out if f is Banana or Apple and then
// 1) Print either cout_banana or cout_apple
// 2) Store/Move f in either vec_banana or vec_apple
}
}
};
void main()
{
vector<unique_ptr<Fruit>> inputs;
inputs.emplace_back(new Banana());
inputs.emplace_back(new Apple());
FruitBox fbox = FruitBox(inputs);
}