우선 소스를 보자.
위의 클래스처럼 템플릿을 사용한 클래스를 생성할때, 클래스 안에 enum 이라던지 typedef 로 재정의한 클래스 내부 타입을 정의하곤 한다. (위의 소스중 enum Direction 같이 말이다.) 그런경우 대부분 위와 같이 코딩하고 컴파일을 돌려보면 이런 메시지에 직면하게 되는데, 처음에 난 도대체 왜 에러가 나는지 몰랐다.
- Error Message
error: expected constructor, destructor, or type conversion before 'Movement'
결론은 template에 따라 달라질 수도 있는데
Direction 이 변수타입명인지 아닌지 몰라서 컴파일러가 해석을 못하는 것이었다.
이는 다음과 같이 Movement::Direction에 typename을 추가하여 해결할 수 있다.
참고로 template 의 default 값을 이용하고 싶으면 그냥 클래스명만 쓰는게 아니고
<> 를 붙여야 한다.
'Programming > C & C++' 카테고리의 다른 글
istream operator >> overriding into template class (0) | 2009.07.31 |
---|---|
Linux 와 Window 에서 현재시간 값 얻어오기 (0) | 2009.04.14 |
#define 에 관한 작은 사실하나 (0) | 2009.01.09 |
Memory Leak 체크하기 (Linux) (1) | 2008.11.20 |
Class 코딩시 알아두면 좋은 내용들 (0) | 2008.09.30 |
댓글