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

创建派生类对象的指针数组。C++。抽象基类,c++,pointers,inheritance,polymorphism,abstract-class,C++,Pointers,Inheritance,Polymorphism,Abstract Class,我需要创建一个包含100个指针的数组,指向从抽象类派生的两个类的对象 数组的第一个元素是类B,第二个是C,第三个是B等等 同时是基类和抽象类 例如: class A { public: A(); virtual double pureVirtualMethod() = 0; }; class B: public A { }; class C: public A { }; 主要来说,我需要创建一个指针数组,指向任何派生类 我不能使用Stl或Boost。因为没有问题:确保基类有一个

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

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

同时是基类和抽象类

例如:

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

class B: public A
{
};
class C: public A
{
};
主要来说,我需要创建一个指针数组,指向任何派生类


我不能使用Stl或Boost。

因为没有问题:确保基类有一个虚拟析构函数。如果没有虚拟析构函数,您将无法轻松删除对象。为了维护这些对象,如果我必须自己编写好的话,我会创建一个简单版本的std::unique\u ptr,对于我自己的标准库实现,显然,我有一个我认为应该能够使用的实现…

注释是正确的。你可以在5秒内用谷歌搜索答案。 无论如何

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

由您自行删除阵列以避免内存泄漏:

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

很酷的故事,埃米尔。你有问题吗你是说A*aa[100]?这显然是硬件,为什么你不至少搜索一下谷歌first@itwasntpete不,他指的是std::数组。或者std::vector。@LuchianGrigore ok。首先我想他指的是boost::array。谢谢你纠正我。是的,很有效。我尝试过这样做,但是我遇到了一些错误,因为结果我不得不重新启动我的Qt。