[英]Closest solution to multiple inheritance through QObject subclasses
我有多個 QObject 子類,它們應該作為接口類並由(繼承)一些其他類來實現。 例如讓class A : virtual public QObject
和class B : virtual public QObject
是接口類。 我需要一個QDialog
對象來實現它們的行為,例如: class X: public QDialog, A, B
。
不幸的是,我在設計時沒有仔細閱讀文檔,現在我意識到了兩個事實:
static_cast
一個虛擬QObject
對象到A*
通過虛擬基。 (這就是編譯器所說的!) 什么是盡可能少地影響代碼的最佳替代設計? 我可以想到宏黑客。 也許基類中的宏(如Q_OBJECT
)將基類的所有成員、信號、槽復制到派生類?
注意QObject
不能被多次繼承真的很糟糕。 不是嗎?
如果您確實需要通過A
和B
類公開QObject
成員函數,請創建一個抽象基類(即只有純虛成員函數的類),例如AbstractQObject
,並在那里重新聲明您需要公開的QObject
成員函數。
讓A
和B
虛擬地從AbstractQObject
派生, X
從QDialog
、 A
和B
派生。
這應該可以解決您描述的問題,但我懷疑您最好重新設計代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.