我有一个类(class) Foo
class Foo;
一个工厂返回一个指向它的指针:
std::unique_ptr<Foo> createFoo();
而且,因为 Herb 告诉我对 Foo 的生命周期没有特殊要求的普通函数应该采用普通的裸指针:
void plainf(Foo* f);
我的客户应该如何正确地做到这一点?
plainF(createFoo());
如果他不得不写,他会不高兴的:
auto someName = createFoo();
plainF(someName.get());
最佳答案
您可以使用 get
成员函数,它返回一个指向所拥有对象的原始指针。
plainF(createFoo().get());
createFoo()
创建的临时文件在 plainF
完成之前不会超出范围。只要 plainF
没有将指针向上传递到范围之外,这是完全安全的。
关于c++ - 工厂 : how to pass temporary smart pointers to functions. C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50858258/