gpt4 book ai didi

c++ - boost::ptr_vector 构造函数

转载 作者:行者123 更新时间:2023-11-28 03:37:54 25 4
gpt4 key购买 nike

我正在尝试在当前项目中使用 boost::ptr_vector,想知道是否可以在 push_back() 方法中使用参数化构造函数,或者我是否需要使用默认构造函数?

作为次要问题,如果我定义它,它是否仍会使用默认构造函数?


这可能不是最好的后续行动,但我看到的大多数使用 boost::ptr_vector 的实现表明 push_back() 方法采用new 运算符。是否可以创建一个对象,然后将指向该对象的指针交给容器的push_back()方法?

最佳答案

为了使用 ptr_vector 或任何 ptr_container 很像标准 vector 或容器。只要定义了构造函数,就可以使用所需的任何构造函数(默认值也可以)。唯一真正的区别是 ptr_container 采用指针而不是静态对象,并支持克隆,克隆充当与浅拷贝相对的深拷贝。

关于后续。可以在 push_back() 方法中使用现有对象,它是:

#include <boost/ptr_container/ptr_vector.hpp>
#include <vector>
typedef boost::ptr_vector<Base> thing;
void foo(void){
thing Bar;
Object * newObj = new Object(param1, param2);
bar.push_back(newObj);
}

它似乎试图使用存储在对象指针中的信息来放置数组。在那种情况下,可以提供一个静态对象。尽管当我出于某种原因考虑提供一个静态对象时,这给我一种奇怪的感觉(类似于指针容器的东西应该只真正用于唯一的项目/指针。)

关于c++ - boost::ptr_vector 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310491/

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