gpt4 book ai didi

c++ - boost::ptr_vector 和指针

转载 作者:行者123 更新时间:2023-11-28 00:40:23 26 4
gpt4 key购买 nike

我想做这样的事情:

typedef X* X_Pointer;

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

因为我希望所有对象都由指针引用,这样它们的复制构造函数就不会被调用,而且我还希望 ptr_vector 在整个 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);

^

最佳答案

boost::ptr_vector 将类而不是指针作为模板参数。你应该这样创建它:

boost::ptr_vector<X> myvec; 

关于c++ - boost::ptr_vector 和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com