C++破坏列表

Dan*_*ani 1 c++ shared-ptr

我有一个类使用一些回调来进行计算.那些回调需要分配需要在回调范围之外生存的数据(动态数组),而不是在类破坏之后.我想过当一个类破坏时vector,auto_ptr它会自动被破坏:

class MyClass
{
    vector<auto_ptr<MyObject>> ThingsToDie;
};
Run Code Online (Sandbox Code Playgroud)

问题是我分配了很多对象,并且它们不共享基类型,所以我不能使用vector它,并为每种类型制作一个向量是很多工作.
如下所示的层次结构:

auto_ptr_base (virtual destructor)
      |
 auto_ptr<T>
Run Code Online (Sandbox Code Playgroud)

将解决我的问题,因为我可以做类似的事情

class MyClass
{
    vector<auto_ptr_base> ThingsToDie;
};
Run Code Online (Sandbox Code Playgroud)

并且将自动将销毁实际分派给每个专用类型.
问题是STL没有那个层次结构,我不想重新实现auto_ptr.
还有其他解决方案吗?

Yoc*_*mer 5

你可以用一个vector<shared_ptr<void>>.

阅读:为什么std :: shared_ptr <void>有效