1

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

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

A同时是基类和抽象类。

例如:

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

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

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

我不能使用 Stl 或 Boost。

4

2 回答 2

0

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

于 2013-08-27T18:09:36.267 回答
0

评论是对的。您可以在 5 秒内 google 答案。任何状况之下...

您需要为 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();
}
于 2013-08-27T18:09:49.673 回答