今天看到一篇
——雖然我不怎麼喜歡中國的用字和用語——有關(guān)
Qt內(nèi)部解析的文章。
哦,我引用的是(2)?因?yàn)槲乙盟脑虮容^不同。
通常,會用這招的人考量的是header的隱藏,反正使用者只要知道public的東西。
再來可能是編譯時(shí)間的問題,因?yàn)橛孟氯ゾ筒挥妹看胃馁Y料而把整串扯上邊的文件都重編一次。
具體來說吧,我的程式中GameObject裝了一個(gè)AnimationScheme的玩意,它是用來控制動畫中圖片的順序。
不過有些類別實(shí)際上是用不到的,很明顯的這有些浪費(fèi)。
正常來說,寫C++的人會用多重繼承,但我碰上Qt本身的問題。
那兩個(gè)親類別我都希望能用Qt那好用的Meta Object System。
但繼承兩個(gè)基於QObject的類別在moc處理的過程中會出問題,我們得用一個(gè)方法繞過去。
私有類別資料這種方式正好可以解決這種問題,因?yàn)橘Y料和對外的窗口脫勾了。
這表示資料部份的「類別」我可以用純C++的方式寫,這樣就可以用多重繼承了。
只是這樣一來我全部都要重寫了,真是災(zāi)難...
PS:
AnimationScheme中的Scheme是從光合作用的Z-Scheme來的。
其實(shí)我不是很清楚scheme是什麼意思,我對Z-Scheme的解釋是:長得像Z的有順序處理的序列。
而我寫AnimationScheme也是意在控制圖片顯示的順序,所以就套上去了。