我愿做这样的事情:的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只是包含基本类型,以防有人问起。如何使用ptr_vector
来存储?
编辑:
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);
^
添加编译器错误 – mezamorphic
谢谢 - 我认为这是原因之一,一要不是一般的typedef指针和引用。您可以键入其他所有内容,但将'*'或'&'保留为显式。这会让我更容易发现我的想法。 –