请允许我介绍一些背景。我有一个抽象类,Foo。
class Foo {
public:
virtual void bar() = 0;
}
我有两个从这个类继承的类。
class FooOne : public Foo {
public:
void bar();
}
和
class FooTwo : public Foo {
public:
void bar();
}
现在在一个完全不同的类中,我想在一个函数中创建一个数组,该数组可以保存这两个类之一的实例。我遇到的问题是我不能创建一个像这样的动态类型的数组,可以吗?我已经习惯了 Objective-C,我可以在其中创建一个类型为 的对象id
。
理想情况下,这就是我正在寻找的(伪代码):
void someFunction(FooType type) {
class aClass = (type == FooTypeOne ? FooOne : FooTwo);
vector<aClass> container;
// Do something with the container.
}
注意:我不能在这个项目中使用 C++11。