簡體   English   中英

C ++傳遞std :: vector <boost :: shared_ptr <foo>>

[英]C++ Passing std::vector< boost::shared_ptr< foo > >

我目前正在學習STL的基礎知識和增強庫,並需要一些幫助。 首先,讓我描述一下我要在哪里構造一個共享foo_class類的向量。 以前,我有一個數組或指針,被要求使用newdelete處理內存,並認為向向量和智能指針的過渡是一個好主意。 我目前有類似的東西:

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 > > >) 
  1. 對於功能傳遞像

     // 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){ } 
  2. 通過const-reference傳遞給構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM