Boost unique_ptr Deletor - PullRequest
       1

Boost unique_ptr Deletor

5 голосов
/ 06 октября 2010

Если я хочу создать unique_ptr типа QueueList (некоторый самоопределяемый объект), как мне определить для него deletor или уже есть шаблон 'Deletor', который я могу использовать?

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

РЕДАКТИРОВАТЬ

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

LIST mylist;

Компилятор: MS Visual Studio 2003

ОШИБКА:

ошибка C2976: 'boost :: interprocess :: unique_ptr': слишком мало аргументов шаблона

ошибка C2955: 'boost :: interprocess :: unique_ptr': использование шаблона классатребуется список аргументов шаблона: см. объявление 'boost :: interprocess :: unique_ptr'

1 Ответ

9 голосов
/ 06 октября 2010

Вот простой класс удаления, который просто вызывает delete для любого данного объекта:

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

Затем вы можете использовать его с unique_ptr следующим образом:

boost::interprocess::unique_ptr<QueueList, Deleter<QueueList> > LIST;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...