我试图找出最干净的方法来实现使用 boost::shared_ptr 作为类的成员。假设我有一个 A 类,其中包含一个 B 类成员的 boost::shared_ptr。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;
};
我知道我可能做错了什么,但我想提供一个我正在努力完成的例子。谢谢!