2010-10-06 117 views
5

如果我想创建一个unique_ptr类型QueueList(某些自定义对象),我该如何为它定义一个deletor或者是否已经有一个我可以使用的模板'Deletor'?boost unique_ptr Deletor

我想要一个unique_ptr所以我可以安全地在线程之间传输对象,而不必在线程之间共享它。

编辑

boost::interprocess::unique_ptr<QueueList> LIST; ///FAILS to COMPILE!!! 

LIST mylist; 

编译:MS Visual Studio 2003中

错误:

错误C2976: '升压::进程间::的unique_ptr':太少模板参数

错误C2955:'boost :: interprocess :: unique_ptr':使用类模板需要模板参数列表 :参见'boost :: interprocess声明::的unique_ptr”

+0

你如何分配QueueList对象?它应该如何删除?考虑提供示例代码。 – sellibitze 2010-10-06 14:55:07

+1

我们能否拥有编译器名称/版本以及确切的错误?除此之外,我没有看到任何错误,除了使用非宏的所有大写字母。 – 2010-10-06 15:10:45

回答

9

下面是一个简单的删除器类,它只是调用删除任何给定的对象:

template<typename T> struct Deleter { 
    void operator()(T *p) 
    { 
     delete p; 
    } 
}; 

可以再用的unique_ptr这样使用它:

boost::interprocess::unique_ptr<QueueList, Deleter<QueueList> > LIST; 
+0

这不是默认的删除器吗? – Amnon 2010-11-22 10:48:53

+1

嗯......看起来像增强没有默认的删除。 – Amnon 2010-11-22 10:55:55

相关问题