2008-10-15 6 views

답변

52

"핌플 (pimpl)"관용구는 이것이 일반적으로 어떻게 처리 되는가입니다.

+0

감사합니다. 이제 작동합니다. 이 두 기사는 이디엄을 잘 설명합니다. – jeffythedragonslayer

+0

성능에 영향을 줍니까? – jjxtra

+0

일반적으로 개인 정보에 액세스 할 때마다 역 참조 관계가 있으므로 성능에 영향을 미칠 수 있습니다. 그러나 컴파일러는 영향을 무시할 수 있도록 컴파일러를 최적화 할 수 있습니다. –

4

이 작업을 수행하는 고전적인 방법은 내부 클래스에 대한 프록시 포인터입니다 (C++ 11 업데이트)를 참조한다 기능을 구현합니다. 내가 아는 C++에서 부분 클래스 정의를 수행 할 방법이 없습니다.

8

보기? ;)

공개 및 보호 된 API 만 선언하는 헤더 파일을 만들 수 있습니다.

사용자에게 표시 할 수있는 내용 만 표시됩니다. 그들은 완전한 API와 정의를 사용하여 작성한 라이브러리와 코드를 연결합니다.

인라인 함수의 경우 : 인라인 함수의 경우 : 인라인되지 않은 코드에서 사용되는지 확인한 다음 라이브러리에서 사용할 수있는 정의가 있어야합니다 (그러나 사용자 구현에서 인라인 될 수는 없습니다).

템플릿 코드의 경우 실제적인 방법은 없습니다. 한 가지 해결책은 다른 오브젝트 유형으로 템플릿 코드를 사용하는 코드를 작성하는 것입니다. 사용자는 라이브러리에서 사용할 수있는 유일한 정의이기 때문에 이러한 항목으로 제한됩니다.

+5

쳇, 여기서 빨리 돌아와야 해. –

관련 문제