0

为什么我不能这样做?

typedef boost::interprocess::unique_ptr<QueueList, QueueListDeletor> UQList;
typedef boost::intrusive::list<UQList> List;  // Compiler (VS 2003) complains 

QueueList 是一个派生自 public boost::intrusive::list_base_hook<>使其成为侵入式链接列表的一部分的类。

我想使用 unique_ptr 能够在线程之间传递这个对象,并且当时只有 1 个单线程拥有这个对象的所有权。

编辑:错误:

错误 C2039: 'pointer' : is not a member of 'boost::intrusive::detail::default_list_hook' 请参阅 'boost::intrusive::detail::default_list_hook' 的声明 请参阅类模板实例化 'boost::intrusive ::list_impl' 正在使用 [ Config=boost::intrusive::listopt::value_traits,boost::intrusive::size_type::pack>::type,boost::intrusive::constant_time_size>::type>:: 编译大小类型,真>]

错误 C2039:“const_pointer”:不是“boost::intrusive::detail::default_list_hook”的成员,请参阅“boost::intrusive::detail::default_list_hook”的声明

4

1 回答 1

2

QueueList 可能派生自 list_base_hook,但 UQList 肯定不是。由于您尝试创建 UQList 的侵入式列表(这是一个 unique_ptr),而不是 QueueList 对象的侵入式列表,因此这不起作用。

于 2010-10-07T09:10:00.853 回答