클래스에 대한 인터페이스 래퍼를 만들고 있습니다. 클래스 내의 멤버는 참조입니다 (큰 구조체를 복사하지 않기 위해). 개인 생성자를 만드는 경우 컴파일러를 달래기 위해 해당 참조를 초기화하는 가장 좋은 방법은 무엇입니까?private 생성자의 참조 멤버로 클래스를 초기화하는 방법은 무엇입니까?
struct InterfaceWrapper {
InterfaceWrapper(SomeHugeStructure& src):m_internal(src){};
int someElement(void) const { return m_internal.someElement; };
private:
InterfaceWrapper(){} // initialize m_internal
SomeHugeStructure& m_internal;
};
다른 생성자를 정의하면 컴파일러에서 자동으로 기본 생성자를 생성하지 않습니다. 따라서이 경우 코드에서 안전하게 제거 할 수 있습니다. –