我有一個類,有一些數據成員,我想從調用者隱藏(因爲包括他們的類型的頭顯着增加了編譯時間,它會要求每個項目使用這個類來添加一個額外的路徑到他們的包含路徑)。私人(隱藏)QSharedData
本課程使用QSharedDataPointer
來存儲這些數據。這樣可以通過使用默認的拷貝構造函數來複制它。
這個類的基本結構是:
class MyClass {
private:
QSharedDataPointer<MySharedClassData> m_data;
};
有任何花哨的技巧來做到這一點沒有定義MySharedClassData
(從QSharedData
繼承)在相同的頭文件?或者還有其他隱藏數據字段的好方法嗎?
我已經嘗試了MySharedClassData
的前向聲明,但這並不奏效(儘管m_data
是private
)。
我目前唯一可以解決的問題是將m_data
聲明爲QSharedDataPointer<QSharedData>
,但隨後我需要在每次訪問數據成員時都強制轉換數據成員。有更好的解決方案嗎?
是[Pimpl](http://en.wikipedia.org/wiki/Opaque_pointer)在這種情況下我能想到的一個成語? – maverik 2012-02-07 12:27:32
@maverik:是的。 「QSharedDataPointer類表示一個'impl'共享對象的'p'ointer。」 – MSalters 2012-02-07 12:35:02
是的,這正是我想要做的。不幸的是,這似乎不適用於'QSharedDataPointer'。或者至少我不明白,如何做到這一點。 – 2012-02-07 12:35:13