![](/img/trans.png)
[英]C++ - passing references to std::shared_ptr or boost::shared_ptr
[英]C++ Passing std::vector< boost::shared_ptr< foo > >
我目前正在學習STL的基礎知識和增強庫,並需要一些幫助。 首先,讓我描述一下我要在哪里構造一個共享foo_class類的向量。 以前,我有一個數組或指針,被要求使用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 > > >)
對於功能傳遞像
// If you intend to modify the vec_ptr_in_func void func(std::vector< boost::shared_ptr < foo > >& vec_ptr_in_func){ } // If you intend to not modify the vec_ptr_in_func void func(const std::vector< boost::shared_ptr < foo > >& vec_ptr_in_func){ }
通過const-reference傳遞給構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.