试试这样的,
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
--EDIT-- Composite DP是这样的,
假设您的场景是控制台上的一个非常简单的菜单,我会这样做,
Leaf
==>MenuItem
类
Composite
==>Menu
类
+operation()
==>Select()
两个类的功能。这个函数应该是虚拟的,并且在Menu
类和MenuItem
类中被覆盖,以分别显示/展开和选择项目。
Menu
类将具有GoBack()
到父菜单的功能