[英]Two abstract classes, deriving from the same base class. How can I access a pointer from one abstract class to the other
[英]Inherit from two abstract classes, where one of them also needs parts of the other base class
這更多是一個沒有實際代碼示例的理論問題,我不確定我是否只是想多了。
整個事情是我正在處理的 GUI 實現的一部分,其中 GUI 表示為由Leafs
和Nodes
特化組成的樹結構,然后具有一些特殊行為,如文本內容、圖像或在其特定render()
處理的任何內容render()
實施。
但是,我的問題是,我希望在某些 GUI 上具有Hover
功能,但Hover
功能需要一些! 基本 GUI 元素功能的一部分,如圖所示,現在我無法理解如何將這兩個部分連接到最終的Button
類。 它必須繼承所有Leaf
功能以及抽象的Hover
內容。
有沒有辦法按照我想象的方式完成這項工作? 或者我是否必須為所有 GUI 提供此Hover
功能,並為不使用它的人實現一個空白的onMouseEnter()
和onMouseExit()
?
我不想將它提供給所有 GUI 的原因是因為檢查鼠標是否懸停在元素上不是免費的。 並非所有元素都必須是交互式的。
一些注意事項:
- Hover
也可能被節點特化繼承
- Hover
中的功能列表已完成
- Leaf
和Node
都以不同的方式實現了Element
一些抽象函數
如果您可以為此想出更好的標題,請隨時提出修改建議
我會將 Element 和 Hover 的通用功能提取到一個通用基類中:
MouseBase
|
------------------------------
| |
| Element
| |
Hover |
| -------------------------------
| | |
| Leaf Node
---------------
|
Button
在這種情況下,如果 MouseBase 是一個虛擬基類,Button 將獲得它的一個單一版本,否則它將通過 Element 繼承獲得一個版本,並通過 Hover 繼承獲得第二個版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.