我如何从数组中创建一个新对象,该数组在C 中保存不同的对象

How do I create a new object from an array which holds different objects in c++

本文关键字:对象 数组 保存 一个 创建 新对象      更新时间:2023-10-16

我有一个base类" 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

有很多方法可以实现这一目标,

这是一种方法:

#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>()
    };