2013-10-18 2 views
0

많은 함수와 변수가있는 큰 네임 스페이스가 있습니다. 이제 손쉽게 유지 관리 할 수 ​​있도록 파일을 다른 파일로 분리하려고합니다.C++ 네임 스페이스를 여러 파일로 분해하는 방법

하나의 파일에는 다른 파일의 함수/변수가 필요할 수 있습니다. 즉, B와 B를 포함 할 필요가 있습니다. A를 포함해야합니다. 각 파일 만 가능할 수 있기 때문에 작동하지 않습니다. 한 번 포함하십시오.

내가 할 수있는 방법이 있는지 확실하지 않습니다.

+2

[앞으로 선언 패턴] (http://en.wikipedia.org/wiki/Forward_declaration) – Andrey

답변

1

프로토 타입을 헤더 파일 (.h)에 넣으십시오. 함수 을 소스 파일 (.cpp)에 구현에 넣으십시오.

당신이 B.cpp에서 A.h을 포함하여 B.cppA.cpp에서 구현 동시에 사용 기능에 A.cppB.h을 포함하여 A.cppB.cpp 구현 예를 기능에 사용할 수있을 것입니다 이런 식으로.

UPDATE 안드레이는 의견이라고 "앞으로 선언"을 지적

.

+0

감사합니다.하지만 내 템플릿 기능과 클래스는 모두 그렇습니다. 헤더 파일에 보관하십시오. forward 선언문은 구조체/클래스에 대해서만 작동합니다. "재정의"를 던지게 할 변수 – w00d

+0

이 경우에는 일반적으로 사용되는 템플릿 함수를 (Common.h와 같이) 공유 헤더에 넣고, 'Ah'와'Bh' 둘 다에 넣습니다. C++에서 템플릿이 작동하는 방식 때문에 템플릿 함수간에 순환 참조를 만들 수 없습니다. –

+0

템플릿을 전달할 수도 있습니다. 일반적으로 템플릿 구현은 * .tcc 파일로 이동하므로 헤더에는 선언 만 포함됩니다. – Johny

0

코드에 따라 문제가 될 수 있습니다. 모든 종속성을 분석하고 직관적 인 방법으로 코드를 분할 할 수 있는지 확인해야합니다.

앞에서 언급 한 내용이 도움이 될 수 있습니다. 또한 인터페이스를 사용하는 데 도움이 될 수 있습니다. 인터페이스에서 많이 찾을 수 있습니다. for instance here on stackoverflow

관련 문제