PIMPL Idiom 是一种实现隐藏技术,其中公共类包装了在公共类所属的库之外无法看到的结构或类。这对库的用户隐藏了内部实现细节和数据。
但是是否有可能实现同样的利用参考?
MCanvasFont.h
namespace Impl {
class FontDelegate;
}
class MCanvasFont
{
public:
MCanvasFont();
virtual ~MCanvasFont();
protected:
// Reference count
long m_cRef;
// agg font delegate
const Impl::FontDelegate& m_font;
}
MCanvasFont.cpp
// helpers
#include "ImplHelpers/FontDelegate.h"
MCanvasFont::MCanvasFont()
: m_cRef(1),
m_font(Impl::FontDelegate() )
{
// constructor's body
}
PS 这段代码用 G++ 编译没有任何问题。