我想避免重新编译包含公共头文件的所有内容,仅仅是因为类定义的私有部分发生了某些变化。我正在调查PIMPL旁边的其他选项。C++中的部分类
这是我的尝试:
我创建了一个包含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) { }
我然后创建一个包括公头(A.H)和链接针对的.lib文件的Win32控制台项目。
一切似乎都奏效,但我想知道任何一路上的陷阱。任何人都可以详细说明这一点?
“我读到PIMPL,但我在寻找一种方式,以避免它。”为什么? – 2013-04-10 15:46:28
您违反了ODR并导致UB。 – PlasmaHH 2013-04-10 15:47:30
那么如果你改变私人部分会发生什么? – juanchopanza 2013-04-10 15:49:26