2010-06-14 102 views
1

Qt有一個內置的支持通過QSharedDataQSharedDataPointer來創建具有集成參考計數的對象。所有的作品都很好,但是對於每個這樣的對象,我需要編寫很多代碼:基於QSharedData的實現類具有構造函數和複製構造函數,對象類itsef具有每個字段的訪問器方法。任何方式來自動生成基於QSharedData的結構?

對於具有5-10個字段的簡單結構,這需要很多接近相同的代碼。是否有一些方法可以自動生成這樣的班級?也許這是一些發生器存在,需要一個簡短的描述,並自動生成所有訪問器的實現類和對象類?

+1

我們一直在使用python和獵豹模板來構建影響力相對較低的代碼生成引擎。我們在python中編寫簡單的解析器來獲取數據並進行準備,並通過獵豹模板完成填充操作http://www.cheetahtemplate.org/ – 2010-06-15 04:48:35

回答

1

當使用QSharedData /指針時,您通常不必執行copy ctor或operator =。默認impls複製/分配QSharedData派生的成員,通常做Right Thing(TM)。 對於公共類,您需要實現創建私有對象的ctor,並且如果私有類沒有在頭中聲明,但在實現中(這更好),dtor(無所事事,唯一的一點是在私人聲明之後,不在內部.cpp中內聯和定義)。 對於私人類,不需要方法/ ctor/dtor實現。 對於簡單的基於值的類,編寫setters當然很乏味,但如果使用純私有成員變量也是如此。 LOC的開銷不會隨着成員數量的增加而增長。

不,沒有標準的發生器解決方案,但我知道,雖然編寫腳本或emacs宏等,這樣做並不困難。將這些東西添加到公開可用的工具箱或QtCreator中可能會有意義...

1

我不認爲將發電機存在這些東西,但我建議兩兩件事:

例子)兩個子類有簡單的例子,說明如何實現共享內斯似乎。儘管如此,我還是無法幫助你,因爲我從來沒有需要去創造​​自己的。

第二個想法是,爲什麼不公開所有數據字段,並將QSharedData派生類作爲帶引用計數的類結構類?封裝可能不太好,但如果你小心,沒有錯應該發生。

相關問題