假设我有一个返回
的函数const MyType*
我可以将结果捕获到shared_ptr中吗?怎么样?
答案 0 :(得分:1)
您可以使用default constructor来执行此操作。顺便说一下有一个问题:小心const T
- T
指针共享!
#include <iostream>
#include <memory>
using namespace std;
class MyType {
public:
};
const MyType* fun() {
return new MyType();
}
int main() {
{
shared_ptr<const MyType> new_ptr(fun());
// Use your pointer..
shared_ptr<MyType> other_ptr(new MyType());
shared_ptr<const MyType> other_ptr2 = other_ptr; // T to const T, allowed
shared_ptr<MyType> new_ptr2 = new_ptr; // const T to T - NOT ALLOWED
}
return 0;
}
答案 1 :(得分:0)
shared_ptr<MyType const>
可以解决问题,但在走这条路之前,我会非常,非常肯定我可以;如果返回的值未使用new
分配,或者已经位于shared_ptr
中。
答案 2 :(得分:0)
shared_ptr
可以接受const类型作为其类型。
std::shared_ptr<const MyType>
所以你可以使用它:
std::shared_ptr<const MyType> pResult(SomeFunction());
然而,假设函数返回的值为new
,并且函数调用者负责返回指针。