gpt4 book ai didi

c++ - 有条件的 boost::shared_ptr 初始化?

转载 作者:太空狗 更新时间:2023-10-29 19:59:44 25 4
gpt4 key购买 nike

为了编写更好的代码,我致力于使用 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 的子级。

最佳答案

boost::shared_ptr<X> p;
if( condition ) {
p.reset( new A() );
}else {
p.reset( new B() );
}

关于c++ - 有条件的 boost::shared_ptr 初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com