2014-06-12 4 views
4

헤더 파일을 포함하지 않고 다른 헤더에서 객체의 유형 별명을 사용하려고합니다. 코드의C++에서 사용하는 forward 선언

내 단순화 된 버전입니다 : 그것은 정의가 A.hVector의 정의로 동일해야하고 그것은 향후 변경 될 수 있기 때문에

// A.h 
    #include <vector> 
    using Vector=std::vector<int>; 

==================================================== 

//B.h 
using Vector;//forward declaration but not working !(Vector has not beed declared) 
int foo(Vector*); 

==================================================== 
//B.cpp 
#include "A.h" 
void foo(Vector*){} 

내가 B.h 다시 using Vector=std::vector<int>;을 쓰고 싶지 않아 및 내 코드는 순환 종속성이므로 포함 할 수 없습니다.

C++ 11에서는 using의 순방향 선언이 가능합니까?

+0

'B.h '에'.h "를'#include"해야합니다. – juanchopanza

+0

@juanchopanza 순환 의존성이 있습니다. 그래서 나는 그것을 할 수 없다. – Omid

+3

한 마디로 말이다. 선언을 반복하는 대신 별도의 헤더로 인수를 빼고 A와 B를 모두 포함 시키십시오. –

답변

7

다음과 같은 방법으로 해결할 수는 없습니다.

// Common.h 
... 
#include <vector> 
using Vector=std::vector<int>; 
... 

는 그 후 당신은 모두 Common.h, A.hB.h을 포함한다.

관련 문제