创建派生类对象的指针数组。 C ++。抽象基类

时间:2013-08-27 18:00:05

标签: c++ pointers inheritance polymorphism abstract-class

我需要创建一个包含100个指针的数组,这些指针指向从抽象类派生的两个类的对象。

数组的第一个元素是class B,第二个是C,第三个是B等。

A同时是基础和抽象类。

例如:

class A
{
 public:
   A();
   virtual double pureVirtualMethod() = 0;
};

class B: public A
{
};
class C: public A
{
};

main()中,我需要创建一个指向任何派生类的指针数组。

我无法使用Stl或Boost。

2 个答案:

答案 0 :(得分:0)

由于没有问题:确保您的基类具有virtual析构函数。如果没有virtual析构函数,您将无法轻松删除对象。为了维护对象,如果我必须自己编写它,我会创建一个简单版本的std::unique_ptr(好吧,对于我自己的标准库实现我显然有一个实现,我认为我应该能够使用...)。

答案 1 :(得分:0)

评论是对的。你可以在5秒内谷歌答案。 无论如何......

您需要为A定义构造函数的主体,或者删除声明并使用默认的

由你来删除数组以避免内存泄漏:)

class A
{
 public:
   A() {} // <----- ADDED BODY
   virtual double pureVirtualMethod() = 0;
};

int main()
{
    A* names[100];
    for (int i = 0; i < 100; ++i)
    if (i % 2)
        names[i] = new C();
    else
        names[i] = new B();
}