より良いコードを書くために、私は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の子であることを明確にしたかった。