【发布时间】:2018-10-31 23:02:48
【问题描述】:
跟进这个问题 Vector/Container comprised of different derived objects in 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);
}
【问题讨论】:
-
见 RTTI - stackoverflow.com/questions/351845/…
-
为什么要区分派生类?你最终想要达到什么目的?由于特定于类的实现,通常您有几个派生类特定的函数。但也可能是你想要别的东西。所以答案具体到你到底想要什么。
标签: c++ inheritance derived-class