我需要创建一个包含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。
答案 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();
}