我目前正在学习 STL 和 boost 库的基础知识,需要一些帮助。让我首先描述一下我在哪里,我想构造一个 shared_ptrs 的向量,比如某个类 foo。以前我有一个数组或指针,需要使用new
和delete
处理内存,我认为过渡到向量和智能指针是个好主意。我目前有类似的东西:
class foo{
....
}
int main(){
std::vector< boost::shared_ptr< foo > > vec_ptr;
vec_ptr.push_back(boost::make_shared<foo>);
....
}
现在我想知道如何在两种情况下最好地传递这个向量: - 进入一个函数。- 进入类对象的构造函数(通过初始化列表初始化对象。
进入一个函数,我猜它最好通过引用传递,如:
void func(std::vector< boost::shared_ptr < foo > >& vec_ptr_in_func){
....
}
进入类构造函数我不确定我最初的猜测是
class vec_class{
vec_class(std::vector< boost::shared_ptr < foo > >& vec_ptr_in_class_)
: vec_ptr_in_class(vec_ptr_in_class_){...}
}
但这似乎给出了以下错误:
no matching function for call to vec_class::vec_class(std::vector< boost::shared_ptr < foo >, std::allocator<boost::shared_ptr< foo > > >)