より良いコードを書くために、私はBoostのスマートポインターを使用することを約束しました。
boost::shared_ptr
常にそのように初期化する必要がありますか?
boost::shared_ptr<TypeX> px(new TypeX);
私の混乱は、次のようなコードブロックから生じています。
void MyClass::FillVector()
{
boost::shared_ptr<TypeX> tempX;
if(//Condition a)
{
boost::shared_ptr<TypeX> intermediateX(new TypeA);
tempX = intermediateX;
}
else
{
boost::shared_ptr<TypeX> intermediateX(new TypeB);
tempX = intermediateX;
}
_typeXVec.push_back(tempX); // member std::vector< boost::shared_ptr<TypeX> >
}
_typeXVecにプッシュバックするスコープ内に保持しながら、その中間のshared_ptrをスキップする受け入れられた方法はありますか?
ありがとうございました。
編集:TypeAとTypeBはどちらもTypeXの子であることを明確にしたかった。