2010-05-18 11 views
0

여러 클래스가 있고 둘 다 동일한 네임 스페이스와 프로젝트에 포함하려면 하나만 포함하면 모든 클래스가 제공됩니다. ? 나는 이것을 가지고 놀았지만 막 다른 길을 계속 지키고있다.C++ 네임 스페이스 도움말

미리 감사드립니다.

답변

4

하나의 포함 만 원한다면 네임 스페이스는 아무 관계가 없습니다.

#include 문만 포함하는 파일을 만들 수 있습니다. 이 같은

뭔가 :

//classes file 
#include "classA" 
#include "classB" 
#include "classC" 

그리고는 그들 모두를 포함하는 단 하나는

#include "classes"

실제 예를

는 STL에서 찾을 수 있습니다.

는 예를 들어 vector을 가지고 :

#ifndef _GLIBCXX_VECTOR 
#define _GLIBCXX_VECTOR 1 

#pragma GCC system_header 

#include <bits/stl_algobase.h> 
#include <bits/allocator.h> 
#include <bits/stl_construct.h> 
#include <bits/stl_uninitialized.h> 
#include <bits/stl_vector.h> 
#include <bits/stl_bvector.h> 

#ifndef _GLIBCXX_EXPORT_TEMPLATE 
# include <bits/vector.tcc> 
#endif 

#ifdef _GLIBCXX_DEBUG 
# include <debug/vector>               
#endif 

#endif /* _GLIBCXX_VECTOR */ 

당신은 단지 #include <vector>

0

네임 스페이스를하고 헤더 파일은 관련이없는에서이 모든 것을 얻는다. 포함시킬 단일 헤더 파일을 제공하려면 'include-all'헤더 추가에 대한 Tom의 조언과 함께 또는 모든 헤더를 단일 파일로 압축 할 수 있습니다 (코드베이스가 실제로 포함되지 않는 한 나쁜 생각 일 수 있습니다 단일 요소의 변경으로 모든 것을 다시 컴파일해야하므로 안정적입니다. 차이가 포장이

#ifndef HEADER_GUARD_H_ 
#define HEADER_GUARD_H_ 
namespace A { 
    class TheA {}; 
} 
namespace B { 
    class TheB {}; 
} 
namespace A { // you can even reopen the namespace 
    class AnotherA {}; 
} 
#endif 

하는 것으로 : 당신은 전처리가 유사한 파일을 생성합니다 톰의 대답에 ... 하나 개 이상의 파일을 제공해야하는지 여부 어쨌든 당신은 같은 헤더 내에서 서로 다른 네임 스페이스를 사용할 수 있습니다 컴파일러에 내용을 전달하기 전에 수동으로 생성 된 헤더.