Список объектов boost :: Unique_Ptr - PullRequest
0 голосов
/ 07 октября 2010

Почему я не могу этого сделать?

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 единственный поток, владеющий этим объектом одновременно.

EDIT: ОШИБКИ:

ошибка C2039: указатель: не является членом boost :: intrusive :: detail :: default_list_hook см. объявление 'boost :: intrusive :: detail :: default_list_hook' смотрите ссылку на экземпляр шаблона класса 'boost :: intrusive :: list_impl', который компилируется с [ Config = повышение :: интрузивный :: listopt :: value_traits, повышение :: навязчивого :: size_type :: упаковка> :: типа, повышение :: навязчивого :: constant_time_size> :: Вид> :: size_type, правда> ]

ошибка C2039: 'const_pointer': не является членом 'boost :: intrusive :: detail :: default_list_hook' см. объявление 'boost :: intrusive :: detail :: default_list_hook'

1 Ответ

2 голосов
/ 07 октября 2010

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

...