クラスのメンバーとして boost::shared_ptr を使用して実装する最もクリーンな方法を見つけようとしています。クラス B メンバーへの boost::shared_ptr を含むクラス A があるとします。B クラスは、基本型 (B) または派生型 (C または D としましょう) のいずれかです。このメンバーは、クラス A の存続期間中 (アクセサー/修飾子を使用して) 継続的に取得/設定されます。B はポリモーフィックでなければならないので、単に B として保存するのではなく、B への参照/ポインターとして保存することはできません。また、自分でメモリを管理する必要も避けたかったのです。すべてが次のように見えたとしましょう:
class A
{
public:
const B& GetB() const { const B* b = m_pB.get(); return *b; } // Is the correct way to do this?
void SetB(const B& b) { B* b = m_pB.get(); *b = b; } // Is the correct way to do this?
private:
boost::shared_ptr<B> m_pB;
};
私はおそらく何か間違ったことをしていることを知っていますが、私が達成しようとしていることの例を提供したいと思いました. ありがとう!