DevicePointer
をカプセル化するクラス がありstd::shared_ptr<Device>
ます。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
です。したがって、「このポインターを逆参照することはできますが、コピーすることはできません」と言う方法が必要です。多くのオブジェクトがオリジナルへの参照を保持するため、オリジナルは共有する必要があります。
私の質問を適切に表現できたことを願っています。ありがとう。