如何从包含c ++中不同对象的数组创建新对象

时间:2017-09-09 17:13:43

标签: c++

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

1 个答案:

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