我有一个基类" A"和许多派生类,比如" B"," C"," D"。 我需要一个包含这些对象(或指针)的数组。我有一个函数,它将索引到这个数组,并应该在数组中创建一个对象(创建新对象)。我该怎么做呢 ?以下是一个片段,显示下面的包装。
class A
{
};
class B: public A
{
};
class C: public A{
};
class D: public A{
};
static A anArray[] = {B, C,D };
int main() {
`A anObject = myFunction(2);`
}
在上面的代码中,当我调用myFunction时,我应该能够得到一个新的D
答案 0 :(得分:1)
有很多方法可以实现这个目标,
这是一种方式:
#include <memory>
class A {
public:
virtual ~A() = default; // important
};
class B: public A { };
class C: public A{ };
class D: public A{ };
static std::unique_ptr<A> anArray[] = {
std::make_unique<B>(),
std::make_unique<C>(),
std::make_unique<D>()
};