2010-10-07 2 views
0

Почему я не могу этого сделать?Список boost :: Unique_Ptr объектов

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

The QueueList это класс, который является производным от public boost::intrusive::list_base_hook<>, чтобы сделать его частью навязчивого связанного списка.

Я хочу использовать unique_ptr, чтобы иметь возможность обходить этот объект между потоками, и только один единственный поток имеет право владения этим объектом в то время.

EDIT: ОШИБКИ:

ошибка C2039: 'указатель': не является членом 'повышение :: навязчивый :: подробно :: default_list_hook' см декларацию «повысить :: навязчивого :: подробно: : default_list_hook ' см. ссылку на экземпляр экземпляра класса' boost :: intrusive :: list_impl ', который скомпилирован с [ [= 0] :: type, boost :: intrusive :: constant_time_size> :: type> :: size_type, true> ]

ошибка C2039: «const_pointer»: не является член «повышения :: навязчивого :: подробно :: default_list_hook» см декларирования «повышение :: навязчивого :: детали :: default_list_hook»

ответ

2

QueueList может быть получен из list_base_hook, но UQList, конечно же, нет. Поскольку вы пытаетесь создать навязчивый список UQList (который является unique_ptr), а не навязчивым списком объектов QueueList, это не сработает.

Смежные вопросы