我需要根據條件初始化boost :: shared_ptr。示例代碼在下面描述了我可以尋找的場景。使用RAW指針條件初始化boost :: shared_ptr變量
class A{};
class B:public A{};
class C:public A();
void some_func(int opt)
{
boost::shared_ptr<A> abstract_ptr;
if(opt==RELEVENT_TO_B)
{
abstract_ptr(new B);
}
else
{
abstract_ptr(new C);
}
}
我知道,上面的代碼示例是錯誤的。在some_func()
的第二行boost::shared_ptr<A> Abstract_ptr
將創建一個shared_ptr對象,其中不帶任何參數的shared_ptr constrcutor,因爲沒有賦值操作符定義,並且沒有shared_ptr在初始化後獲取原始指針,所以if-else內的代碼是錯誤的。
我的問題是,我如何可以實現這一點(條件初始化,如some_func所示)適度boost :: shared_ptr。
http://stackoverflow.com/questions/3305801/c-shared-ptr-attach-to-a-new-raw-pointer?rq=1 – alestanis