我有一个函数需要返回另一个类的新对象,所以我想我需要将它的返回对象保存在一个共享指针中。像这样
X类内部;
Y* func(param)
{
return new Y(param);
}
我试过把它改成
std::shared_ptr<Y> func(param)
{
std::shared_ptr<Y> y(new Y(param));
return y;
}
我不想返回本地对象,怎么办?
最佳答案
我建议你有 std::shared_ptr
作为返回类型和 return std::make_shared<Y>()
转让所有权。
这是一个可能对您有所帮助的工作示例:
#include <memory>
#include <iostream>
#include <string>
class Y {
public:
Y(const std::string& n)
: name{n} {}
std::string name;
};
std::shared_ptr<Y> func()
{
return std::make_shared<Y>("new class");
}
int main()
{
std::shared_ptr<Y> p_class = func();
std::cout << p_class->name;
// outputs: "new class"
return 0;
}
关于c++ - 返回一个 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561840/