クラス定義のプライベート部分で何かが変更されたという理由だけで、パブリック ヘッダー ファイルを含むすべての再コンパイルを回避したいと考えています。PIMPL以外のオプションを調査しています。
これは私が試したものです:
クラス A を含むライブラリを作成しました。
A_p.hには、クラス A のプライベート部分が含まれています
void PrivateMethod(int i);
ああ、公開ヘッダー ファイル:
class A
{
public:
A();
virtual ~A();
// other public members
private:
#ifdef A_PRIVATE
#include "A_p.h"
#endif
};
A.cpp
#define A_PRIVATE
#include "A.h"
A::A() {}
A::~A() {}
void A::PrivateMethod(int i) { }
次に、パブリック ヘッダー (Ah) と .lib ファイルに対するリンクを含む Win32 コンソール プロジェクトを作成しました。
すべてが機能しているように見えますが、途中で落とし穴がないか疑問に思っています。誰でもこれについて詳しく説明できますか?