为了编写更好的代码,我致力于使用 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> >
}
是否有一种可接受的方式来跳过该中间 shared_ptr,同时将其保持在范围内以推回 _typeXVec?
谢谢你。
编辑:想澄清 TypeA 和 TypeB 都是 TypeX 的孩子。