0

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

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


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

4

1 回答 1

2

出于使用标准向量或容器的ptr_vector目的ptr_container。只要定义了构造函数,就可以使用任何所需的构造函数(默认值也可以)。唯一真正的区别是 aptr_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);
}

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

于 2012-04-25T07:56:23.927 回答