プライベートデータメンバーを非表示にしますか? (C ++)
質問
cppファイル内で、C ++クラスのプライベートデータメンバーをユーザーから隠す方法はありますか?プライベートメンバーは実装の一部であると考えており、ヘッダーファイルで宣言するのは少し遅れているようです。
解決
" pimpl"イディオムは、これが一般的に処理される方法です。
参照
他のヒント
PIMPLイディオムのようなものを使用したい
をご覧ください。
これを行う古典的な方法は、機能を実装する内部クラスへのプロキシポインターを使用することです。私が知っているC ++で部分的なクラス定義を行う方法はありません。
商用に行きますか? ;)
ヘッダーファイルを作成できます。ヘッダーファイルでは、パブリックAPIと保護されたAPIのみを宣言します。
ユーザーにはこれらが表示されますが、それらは含めることができます。完全なAPIと定義を使用して構築したライブラリにコードをリンクします。
インライン化された関数の場合:インライン化されていないコードで使用されていることを確認すると、ライブラリで定義が使用可能になります(ただし、ユーザー実装でインライン化されるかどうかはわかりません)。
テンプレート化されたコードの場合、実際に回避する方法はありません。中途半端な解決策の1つは、異なるオブジェクトタイプのテンプレートコードを使用するコードを作成することです。ライブラリで使用可能な定義はこれらのみであるため、ユーザーはこれらに限定されます。
所属していません StackOverflow