2012-12-12 113 views
0

目前我正在學習STL的基本知識和Boost庫,並希望一些幫助。首先,我要說明我在哪裏,在我要建構說,一些類Foo的shared_ptrs的載體。以前我有一個數組或指針,並需要使用newdelete來處理內存和思想的載體和智能指針的過渡將是一個不錯的主意。目前,我有這樣的:C++傳遞的std ::矢量<提高:: shared_ptr的< foo >>

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

的功能是什麼,什麼是構造函數,要與載體呢?很大程度上取決於這一點。 – jogojapan

+0

我想你想你的構造公開。默認情況下它是私人的。 –

回答

0
  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. 通行證它由用於構造常量參考。

相關問題