본문 바로가기
Programming/C & C++

template - class 내부 변수명을 명확히 하기

by leanu 2009. 2. 19.
우선 소스를 보자.



위의 클래스처럼 템플릿을 사용한 클래스를 생성할때, 클래스 안에 enum 이라던지 typedef 로 재정의한 클래스 내부 타입을 정의하곤 한다. (위의 소스중 enum Direction 같이 말이다.) 그런경우 대부분 위와 같이 코딩하고 컴파일을 돌려보면 이런 메시지에 직면하게 되는데, 처음에 난 도대체 왜 에러가 나는지 몰랐다.

- Error Message
    error: expected constructor, destructor, or type conversion before 'Movement'

결론은 template에 따라 달라질 수도 있는데 

Direction 이 변수타입명인지 아닌지 몰라서 컴파일러가 해석을 못하는 것이었다. 

이는 다음과 같이 Movement::Direction에 typename을 추가하여 해결할 수 있다.


참고로 template 의 default 값을 이용하고 싶으면 그냥 클래스명만 쓰는게 아니고

<> 를 붙여야 한다.

댓글