为什么我不这样做?
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:'指针':不是'boost :: intrusive :: detail :: default_list_hook'的成员 看到'boost :: intrusive :: detail :: default_list_hook'的声明 请参阅正在编译的类模板实例化'boost :: intrusive :: list_impl'的引用 同 [ 配置=升压::侵入:: listopt :: value_traits,升压::侵入:: SIZE_TYPE ::包&GT; ::类型,升压::侵入:: constant_time_size&GT; ::类型&GT; :: size_type的,真&gt; ]
错误C2039:'const_pointer':不是'boost :: intrusive :: detail :: default_list_hook'的成员 请参阅'boost :: intrusive :: detail :: default_list_hook'
的声明答案 0 :(得分:2)
QueueList可能来自list_base_hook,但UQList肯定不是。由于您尝试创建UQList的入侵列表(这是一个unique_ptr)而不是QueueList对象的侵入列表,这将无效。