シンプルなGUIを設計しています。私は子と 1 つの親を持つウィジェットを持っています。各 Widget は、WidgetComposite オブジェクトのベクトルを持つ Composite オブジェクトです。これらの WidgetComposites の 1 つは PaintingBehaviour ですが、Widget はそれ自体を認識していません。
ウィンドウを表示するには、ScreenVisitor と呼ばれるビジターを使用します。Visitor が呼び出されると、次のようになります。
最初のウィジェットである WidgetScene は、各ウィジェットで反復処理を行い、「accept(Visitor* v)」メソッドを呼び出します。次に、各ウィジェットが訪問者を受け入れ、その子に対して繰り返し処理を行います。
たとえば、これは訪問者が受け入れなければならないオブジェクトのリストです (発生する順序で)。
root
child1
child2
child3
child4
child5
child6
child7
今、私の問題は簡単です: 各ウィジェットをその親にペイントしたいのです。どのように進めますか?ツリーで試してみましたが、常に同じ問題があります。階層を上に移動する必要がある場合 (たとえば、child3 を表示した後、child4 を表示する必要がある場合)、取得方法がわかりません。右の親。
私は C++ でコーディングしていますが、この問題は言語固有ではありません。
あなたはなにか考えはありますか ?前もって感謝します !