나는 class.cpp
및 class.h
에 정의 된 클래스가 있습니다. 클래스는 private 멤버 및 메서드에 대해 stuff.h
(물론 stuff.cpp
)에 정의 된 몇 가지 구조/클래스/형식/모든 것을 사용합니다. 내 주 프로그램은 main.cpp
이며, #include
은 class.h
이지만, 무엇이든 상관하지 않습니다. stuff.h
. 차이가 나는 경우 class.cp
이 동적으로로드됩니다 (.dll/.so).
나는 단지 을 과 stuff.cpp
에 포함시키는 것이 이상적입니다. 단지 main.cpp
에 네임 스페이스 오염을 일으키고 최종 프로그램에 링크 됨으로써 여분의 팽창을 유발하기 때문입니다.
문제는 class.h
에 private:
부분에 정의가 사용되었으므로 stuff.h
을 class.h
에 포함시켜야한다는 것입니다. main.cpp
은 class.h
을 가져오고 이후로는 stuff.h
이됩니다!개인 데이터 용 헤더 만 .h 파일에 포함합니다.
이 부분이 분명해졌습니다. C#에서는 부분 클래스로 해결할 수 있습니다. 어떻게하면 C++에서이 작업을 수행 할 수 있습니까?
'main.cpp'에 포함 된'stuff.h '의 기호 또는 실제 정의가 걱정 되십니까? 의미 -'stuff.h'의 심볼에 대해서만 forward 선언을하면'main.cpp'에서 여전히 문제가 발생합니까? –
@ eli-iser 전달 선언이란 무엇입니까? – baruch
Soren과 ks1322에서 설명했듯이,'class Stuff'를 가지고 있다면'class stuff '을 사용하여'#include'stuff.h'없이'class.h'에서 사용할 수 있습니다. 이것은'class.h '가'# include'없이'Stuff' 클래스를 인식하도록 enalbe합니다. –