因此,当试图与 PIMPL
习惯用法取得联系时,会发现两种常见的做法:
class PimplClass;
class VisibleClass
{
private:
PimplClass* d_ptr;
};
// *.hpp
class VisibleClass
{
private:
struct PimplClass;
PimplClass* d_ptr;
};
// *.cpp file:
struct VisibleClass::PimplClass
{
int x;
};
这里有两个问题:
最佳答案
您可以在类范围内进行前向声明。所以第二个例子是绝对正确的。
第二个例子的主要优点是你的 PimplClass
不能从任何地方访问,只能从 VisibleClass
访问,因为它是在它的私有(private)部分中声明(向前声明)的。
关于c++ - 这两种 PIMPL 方法之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32005777/