PIMPL Idiom은 공개 클래스가 공용 클래스가 포함 된 라이브러리 외부에서 볼 수없는 구조 나 클래스를 래핑하는 구현 숨기기 기술입니다. 이렇게하면 라이브러리 사용자의 내부 구현 세부 사항과 데이터가 숨겨집니다.PImpl 대신 불투명 한 참조. 가능한가?
동일한 참조를 사용하여 구현할 수 있습니까?
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
}
P.S. 이 코드는 G ++에서 문제없이 컴파일됩니다.
할당이 실패하면 예외가 발생하므로 문제가 없습니다. (예외 생성자 문제를 제외하고) – Hurkyl
개체를 정적으로 할당하기 위해 싱글 톤 패턴을 사용할 수 있습니다. GetInstance는 정적 객체에 대한 참조를 반환합니다. – Steed
임시 수명은 실제로 생성자의 본문을 포함하도록 확장됩니다. 그러나 여러분이 말했듯이, 그것은 대상의 수명을 확실히 커버하지 못합니다. –