如何为boost :: shared_ptr分配boost :: tuple

时间:2013-04-11 03:04:16

标签: c++ shared-ptr boost-tuples

在我的代码中,我有类似的东西

shrd_ptr_obj st = boost::make_shared<Myobj>();
Myobj tp =  boost::make_tuple(0,0,0,0,0 );

如何将st指向tp?

1 个答案:

答案 0 :(得分:3)

自然的方法是将构造函数参数传递给make_shared并在同一行上创建对象。

shrd_ptr_obj st = boost::make_shared<Myobj>(boost::make_tuple(0,0,0,0,0));

如果要在单独的步骤中构造对象,则需要使用tp分配new,而不是在堆栈上创建它。然后,您可以从此boost::shared_ptr ed指针创建new

Myobj *tp = new Myobj(boost::make_tuple(0,0,0,0,0));
shrd_ptr_obj st = boost::shared_ptr<Myobj>(tp);