我得到了一个第三方库,其中包含要使用的标头。现在这个库有一个类'Base'。这个类的问题是它没有虚拟析构函数。现在,由于我没有第三方代码,我无法在那里进行更改。
我被告知用它编写几个派生类,并确保在删除对象时正确清理对象。我们怎样才能做到这一点?
谢谢回复,看来我只有2个选项。
1)将虚拟析构函数放在派生类中 2)使用组合。
我打算采用第一种方法。我打算使用带有虚拟析构函数的包装派生类。然后使用这个包装派生类进行进一步的派生。下面是代码。
//++ THIRD PARTY HEADER
class base
{
public:
~base(){ }
};
//-- THIRD PARTY HEADER
//++ MY CODE
// wrapper polymorphic base.
class polymorphic_base
{
public:
virtual ~polymorphic_base() { }
};
class derived1 : polymorphic_base
{
/// derived 1
};
class derived2 : polymorphic_base
{
/// derived 2
}
void foo(polymorphic_base *pb)
{
// use pb
// use pb
delete pb;
}
//-- MY CODE
请让我知道这种方法是否可行?