クエリがあります。共有ポインタが指すオブジェクトを直接取得できますか?または、get()
呼び出しで基になるRAWポインターを取得し、対応するオブジェクトにアクセスする必要がありますか?
_shared_ptr
_が指すオブジェクトへの参照を取得するには、2つのオプションがあります。 ptr
という名前の_shared_ptr
_変数があるとします。 _*ptr
_または*ptr.get()
を使用して参照を取得できます。これら2つは同等である必要がありますが、最初の方が優先されます。
この理由は、生のポインタの逆参照操作を真似ようとしているからです。式_*ptr
_は「ptr
が指すデータを取得してください」と表示されますが、式*ptr.get()
は「ptr
内にラップされた生のポインターが指すデータを取得します」。明らかに、最初のものはあなたの意図をより明確に説明しています。
もう1つの理由は、shared_ptr::get()
が実際にneed rawポインターへのアクセスを行うシナリオで使用されることを意図していることです。あなたの場合、あなたはそれを必要としないので、それを要求しないでください。生のポインタ全体をスキップして、より安全な_shared_ptr
_の世界に住み続けます。
上記のケンの答え (またはこれらのソート方法に応じて以下)は素晴らしいです。コメントするのに十分な評判がありません。
->
に対してshared_ptr
演算子を直接使用して、それが指すオブジェクトのメンバーにアクセスできることを追加したいと思います。
boost documentation は素晴らしい概要を提供します。
C++ 11が広く採用された今、Boostバージョンよりも std::shared_ptr
を優先する必要があります。参照解除演算子 here を参照してください。