我有一个类,有一些数据成员,我想从调用者隐藏(因为包括他们的类型的头显着增加了编译时间,它会要求每个项目使用这个类来添加一个额外的路径到他们的包含路径)。私人(隐藏)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