我願做這樣的事情:的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指針和引用。您可以鍵入其他所有內容,但將'*'或'&'保留爲顯式。這會讓我更容易發現我的想法。 –