boost :: ptr_vector и указатели

Я хотел бы сделать что-то вроде этого:

typedef X* X_Pointer;

boost::ptr_vector<X_Pointer> myvec;
X_Pointer x = new X();
myvec.push_back(x);

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

Однако компилятор жалуется на последнюю строку. Я думаю, потому что я храню X* и не только X,

X просто содержит примитивные типы на случай, если кто-нибудь спросит.

Как я могу использовать ptr_vector хранить X*?

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

error : no instance of overloaded function "boost::ptr_vector<T, CloneAllocator, Allocator>::push_back [with T=X_Ptr, CloneAllocator=boost::heap_clone_allocator, Allocator=std::allocator<void *>]" matches the argument list

argument types are: (X_Ptr)

object type is: boost::ptr_vector<X_Ptr, boost::heap_clone_allocator, std::allocator<void *>>

myvec.push_back(x);

^

0

Решение

boost :: ptr_vector принимает класс, а не указатель в качестве параметра шаблона. Вы должны создать это так:

boost::ptr_vector<X> myvec;
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]