C++の子オブジェクトの親ポインタ(共有ポインタを使用して作成された)への弱ポインタを維持する標準的な方法はありますか?C++で親に弱いポインタを維持するには?
本質的に、私は次の行に何かを実装する必要がありますで
Class B;
Class A
{
...
private:
B m_b;
};
Class B
{
....
public:
void SetParentPtr(const boost::shared_ptr<A>& a)
{
m_parentPtr = a;
}
private:
boost::weak_ptr<A> m_parentPtr;
};
をクラスBのすべてのインスタンス上には、親への弱いポインタを保持する必要がある(すなわち、クラスAのオブジェクト)。クラスAオブジェクトは、shared_ptrを使用してインスタンス化されます。私はnull deleterを使用するソリューションを考えることができます。しかし、それはこのようなことをする標準的な方法ですか?
stefaanv IMHOが提案したenable_shared_fromというこのパラダイムは、私がやろうとしていたことに適しています。これは、親のメンバー関数内で共有ポインターを取得するためにユーザーに透過的になります。子ポインターは、子が保持する弱ポインタに割り当てることができます。 – anbhat