2013-11-28 3 views
0

일부 복합 클래스 내에서 선언 된 유형의 변수를 정의하는 가장 편리하고 명확한 방법은 무엇입니까? 예를 들어 : 긴 같은 피할 수있는 안전하고 편리한 방법이 있나요클래스에 정의 된 유형 사용

ClassA<ClassT1, ClassT2>::ENUM_A var = ClassA<ClassT1, ClassT2>::A1; 
ClassA<ClassT1, ClassT2> obj(var); 

: 당신이 다른 곳이 개체를 사용하고자 할 때

template<class T1, class T2> 
class ClassA 
{ 
    enum ENUM_A { A1, A2 }; 
    //constructor 
    ClassA(const ENUM_A& x); 
} 

그런 다음, 당신은 같은 긴 타입 정의를 작성해야 선언? (나는 typedef 생각했지만, 어쩌면이)

+1

'auto var = ClassA :: A1;'? – juanchopanza

+0

은 Boost의 ['graph_traits'] (http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/graph_traits.html)와 유사 할 수 있습니다. – gongzhitaao

+0

중첩 된 형식이 많이 사용되는 경우 최상위 수준으로 수준을 올리면 어떨까요? –

답변

1

이 솔루션은 이미 이름이되었습니다 typedef (또는 using), 및 auto 완전히 유형을 명명 건너 뜁니다.

+0

'auto'는 좋은 해결책입니다. 이해하는 바와 같이'enum' 요소 앞에'ClassA , ClassT2> ::'를 피하는 비슷한 방법은 없다. 예를 들어, 같은 요소 (예 :'A1')가'ClassA'의 많은 템플릿 유형에 사용될 때? –

+0

@ user2028058 : 만약에 그것이 의존하지 않는다면, 그렇습니다. 나는'enum'을 꺼낼 때라고 생각합니다. 범위 수준 또는 일부 추상 기본 클래스로. –

관련 문제