私は現在、STLとBoostライブラリの基本を学んでおり、支援を求めています。最初に、私がどこにいるのかを説明しましょう。たとえば、あるクラスfooのshared_ptrsのベクトルを作成したいと思います。以前は配列またはポインターがあり、メモリを使用new
およびdelete
処理する必要があり、ベクトルとスマートポインターへの移行は良い考えだと思いました。私は現在次のようなものを持っています:
class foo{
....
}
int main(){
std::vector< boost::shared_ptr< foo > > vec_ptr;
vec_ptr.push_back(boost::make_shared<foo>);
....
}
ここで、2つの状況でこのベクトルを渡すのに最適な方法を知りたいと思います。-関数に。-クラスオブジェクトのコンストラクターに(初期化リストを介してオブジェクトを初期化します)。
関数に、次のように、参照によって渡すのが最適だと思います。
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 > > >)