プライベートデータメンバーを非表示にしますか? (C ++)

StackOverflow https://stackoverflow.com/questions/206272

  •  03-07-2019
  •  | 
  •  

質問

cppファイル内で、C ++クラスのプライベートデータメンバーをユーザーから隠す方法はありますか?プライベートメンバーは実装の一部であると考えており、ヘッダーファイルで宣言するのは少し遅れているようです。

役に立ちましたか?

解決

" pimpl"イディオムは、これが一般的に処理される方法です。

参照

他のヒント

PIMPLイディオムのようなものを使用したい

http://en.wikipedia.org/wiki/Opaque_pointer

Pimpl Idiom

をご覧ください。

これを行う古典的な方法は、機能を実装する内部クラスへのプロキシポインターを使用することです。私が知っているC ++で部分的なクラス定義を行う方法はありません。

商用に行きますか? ;)

ヘッダーファイルを作成できます。ヘッダーファイルでは、パブリックAPIと保護されたAPIのみを宣言します。

ユーザーにはこれらが表示されますが、それらは含めることができます。完全なAPIと定義を使用して構築したライブラリにコードをリンクします。

インライン化された関数の場合:インライン化されていないコードで使用されていることを確認すると、ライブラリで定義が使用可能になります(ただし、ユーザー実装でインライン化されるかどうかはわかりません)。

テンプレート化されたコードの場合、実際に回避する方法はありません。中途半端な解決策の1つは、異なるオブジェクトタイプのテンプレートコードを使用するコードを作成することです。ライブラリで使用可能な定義はこれらのみであるため、ユーザーはこれらに限定されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top