2012-12-12 5 views
21

다른 클래스 범위 내에서 정의 된 열거 형을 전달할 수 있는지 궁금합니다. 예를 들어, 다음을 고려 : 다른 헤더에 나는 '유형'열거를 선언 전달하고 싶습니다 지금C++ 전달 클래스 선언 범위 열거 형

//A.h 
class A 
{ 
public: 
    enum class type: unsigned long { /*some stuff*/ } 
}; 

을 (가정하자 클래스 B는 밑에 :: 유형으로 무언가를하는 기능을 가지고)

//B.h 
enum A::type; //use of undefined type 'A' 

class B 
{ 
public: 
    UseTypeEnum(A::Type&); 
}; 

이 작동하지 않습니다 중 하나

열거가 아에서 전역 범위에서 선언 된 경우 아무 문제가 없습니다
//B.h 
class A; 
enum A::type; //still use of undefined type 

class B... 

이렇게 할 방법이 있습니까?

+2

열거 형은 정적 멤버로 선언해야합니다. 열거 형 선언을 생략하고 프로그램을 작성할 수는 없습니까? –

+0

for enum : http://stackoverflow.com/questions/2238170/forward-declaration-of-nested-enum –

답변

15

중첩 된 형식을 클래스 정의 외부에 선언 할 수 없습니다.

클래스 외부에서 사용해야하는 경우 클래스 정의를 포함하거나 네임 스페이스로 이동해야합니다.

+2

슬픈 부분은 외부 라이브러리에 관한 것입니다. – Predelnik