私はC++でこれを行うことに興味がありました:
ユーザーに配布する小さなライブラリがあるとしましょう。クライアントに、必要なバイナリファイルと関連するヘッダーファイルの両方を提供します。たとえば、次のヘッダーが開発で使用されていると仮定します。
#include <string>
ClassA
{
public:
bool setString(const std::string & str);
private:
std::string str;
};
さて、私の質問です。展開に関して、クライアントに「reduced」ヘッダーを与えることに根本的な問題はありますか?たとえば、プライベートセクションを削除して、次のように指定できますか。
#include <string>
ClassA
{
public:
bool setString(const std::string & str);
};
私の本能は「はい、これは可能ですが、落とし穴があります」と言っているので、ここでこの質問をしているのです。これが可能で安全であれば、プライベート変数を非表示にするための優れた方法のように見えます。したがって、場合によっては前方宣言を回避することもできます。
シンボルはまだバイナリ自体に存在し、これはソースコードレベルでの可視性にすぎないことを認識しています。
ありがとう!