我想避免重新编译包含公共头文件的所有内容,只是因为类定义的私有部分发生了更改。我正在研究 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) { }
然后,我创建了一个 Win32 控制台项目,其中包括公共标头 (Ah) 和针对 .lib 文件的链接。
一切似乎都有效,但我想知道一路上是否有任何陷阱。谁能详细说明这一点?