このようなことを試してみてください。
class D : public B
{
virtual const char * GetParent()
{
return "B";
}
// other stuff....
}
class DD : public D
{
virtual const char * GetParent()
{
return "D";
}
// other stuff....
}
これがあなたの望むものであることを願っています。なんでそんなものが必要なの?階層を持つオブジェクトレジストリのようなものを作成していますか?
- 編集 -
D * d = ⅆ
または、本当に必要な場合は、DD オブジェクトを D オブジェクトにコピーするコピー関数を作成します。しかし、私が推測するのは、あなたが正しく質問していないということです。
ps初めて質問を間違って読んで申し訳ありません。
- 編集 -
わかりました、必要なのは複合デザインパターンです。UML ダイアグラムが示すように、それほど複雑ではありません。一度実装すると、他のものをコーディングするのは本当に簡単です。デザインパターンについて話すとき、私は「ダミーのためのデザインパターン」という本が好きです。設計パターンを非常にうまく説明し、複合設計パターンを非常によく説明しています。ヘルプが必要な場合は、コメントをお願いします。しかし、最初に自分でやってみてください。:) 楽しい。ウィキペディア リンク : http://en.wikipedia.org/wiki/Composite_pattern
--編集-- 複合 DP は次のようになります。

あなたのシナリオがコンソールの非常に単純なメニューであると仮定すると、私はこのようにします.
Leaf
==>MenuItem
クラス
Composite
==>Menu
クラス
+operation()
==>Select()
両方のクラスの機能。この関数は仮想であり、Menu
クラスとMenuItem
クラスでオーバーライドして、項目をそれぞれ表示/展開および選択する必要があります。
Menu
クラスにはGoBack()
親メニューへの機能があります