我有一个类,DevicePointer
它封装了一个std::shared_ptr<Device>
. 需要保存指向设备的指针的各种类派生自DevicePointer
. 在我开始使用之前shared_ptr
,DevicePointer
有一个::Expose()
函数可以返回一个指向设备的原始指针。现在我使用 shared_ptr 来保存设备指针,我不知道如何返回它。请注意,::Expose
应该调用的唯一原因是取消引用指针。
这是原始 Expose 的样子:
Device * Expose() const { return MyDevice; }
并且会像这样使用:
Device::Expose()->ExecuteFunction(a, b, c);
现在MyDevice
是一个std::shared_ptr<Device>
,我不知道如何返回它以解除引用。显而易见的选择是:
std::shared_ptr<Device> Expose() { return MyDevice; }
但我担心性能,特别是创建一个新的临时std::shared_ptr
. 所以我需要某种方式说“你可以取消引用这个指针,但你不能复制它”。原始的仍然需要共享,因为许多对象将持有对它的引用。
我希望我已经充分表达了我的问题。谢谢。