【发布时间】:2020-03-18 13:09:02
【问题描述】:
这更多是一个没有实际代码示例的理论问题,我不确定我是否只是想多了。
整个事情是我正在研究的 GUI 实现的一部分,其中 GUI 表示为由 Leafs 和 Nodes 特化组成的树结构,然后具有一些特殊行为,如文本内容、图像或其他在其特定的render() 实现中得到处理。
但是,我的问题是,我希望在某些 GUI 上具有 Hover 功能,但 Hover 功能需要!一些!基本的 GUI 元素功能,如图所示,现在我无法理解如何将这两个部分连接到最终的 Button 类中。它必须继承所有 Leaf 功能以及抽象的 Hover 东西。
有没有办法按照我想象的方式进行这项工作?或者我是否必须为所有 GUI 提供此 Hover 功能,而只为不使用它的 GUI 实现空白 onMouseEnter() 和 onMouseExit()?
我不想将它提供给所有 GUI 的原因是因为检查鼠标是否悬停在元素上不是免费的。并非所有元素都必须是交互式的。
几点说明:
- Hover 也可能被 Node 特化继承
- Hover中的函数列表已完成
- Leaf 和 Node 都以不同的方式实现了来自 Element 的一些抽象函数
如果您能为此想出更好的标题,请随时提出修改建议
【问题讨论】:
-
让
Hover继承自Element。然后Leaf和Node继承自Element或Hover取决于它需要什么。从Hover继承的仍然是Elements。 -
那么我必须有两个单独的
Hover类,一个用于Leaf,一个用于Node,因为Leaf和Node都实现了一些抽象Element职能。我将在笔记中将此添加到我的问题中 -
嗯...不,你不会? Leaf 和 Node 仍然能够实现所有、没有或任何抽象元素函数。
-
@super 是的,对不起,我看错了你在那里写的东西。但是,我是否不需要
Leaf和Leaf_Hover(Node相同)来继承其他特殊元素?例如Label是Leaf并且不需要Hover功能。或者有没有办法从多个基础继承并根据情况选择正确的?
标签: c++ inheritance polymorphism