呼び出し元から隠したいデータ メンバーを持つクラスがあります (型のヘッダーを含めるとコンパイル時間が大幅に長くなり、このクラスを使用するすべてのプロジェクトでインクルード パスにパスを追加する必要があるため) )。
このクラスはQSharedDataPointer
、このデータを格納するために使用します。このようにして、デフォルトのコピー コンストラクターを使用してコピーできます。
このクラスの基本構造は次のとおりです。
class MyClass {
private:
QSharedDataPointer<MySharedClassData> m_data;
};
同じヘッダーファイルで(から継承する)を定義せずにこれを行うための巧妙なトリックはありますか? または、データ フィールドを非表示にする他の良い方法はありますか?MySharedClassData
QSharedData
私はすでに の前方宣言を試みましたが、これはうまくいきませんでした (事実にもMySharedClassData
かかわらず)。m_data
private
私が現在できる唯一の解決策は、m_data
として宣言するQSharedDataPointer<QSharedData>
ことですが、アクセスするたびにデータメンバーをキャストする必要があります。より良い解決策はありますか?