从数组的共享ptr访问共享ptr



我有一个函数,它将一些值复制到我要传递的对象。

像这样

void functionReturnObjects(int* ptr);

我将像这样调用上面的函数

std::shared_ptr<int> sp( new int[10], std::default_delete<int[]>() );
functionReturnObjects(sp.get());  => so this will copy int objects to sp.

现在,我想从上面的10个共享ptr中取出一个单独的副本,或者想与其他共享ptr共享。

比如

std::shared_ptr<int> newCopy = sp[1] ==> This is not working I am just showing what I want.

基本上我想把所有权从10共享指针转移到新的单独的共享ptr,而不分配新的内存。

如果问题不清楚,请告诉我。

使用std::shared_ptr的混叠构造函数(overload #8):

template< class Y > 
shared_ptr( const shared_ptr<Y>& r, element_type *ptr );
std::shared_ptr<int> newCopy(sp, sp.get() + 1);

这将使newCopysp共享由new int[10]创建的整个数组的所有权,但newCopy.get()将指向该数组的第二个元素。

在c++ 17中,如果你碰巧发现它更易于阅读,它可以看起来像下面这样:

std::shared_ptr newCopy(sp, &sp[1]);

相关内容

  • 没有找到相关文章

最新更新