C ++でツリークラスを設計しようとしていますが、ノードの破棄で問題が発生しています。
ノードを破棄する場合、他のポイントが指定されている可能性があるため、サブツリー全体を破棄したくありません。したがって、明らかな解決策は、参照カウントを使用することです。親への弱いポインターと、子ノードへの共有ポインターのベクトルがあります。そうすれば、ノードが破壊された場合、その子は何もポイントしていない場合にのみ破壊されます。
しかし、ここで別の問題が発生します。ノードに子を追加することです。weak_ptrは、オブジェクトを指すshared_ptrがすでに存在する場合にのみ機能します。また、ノードに子を追加すると、そのノードを指しているshared_ptrがどこにあるかわかりません。だから私はここで何をしますか?