살아가는 이야기

g++ 템플릿 오류 메시지 본문

컴퓨터, 풀어그림

g++ 템플릿 오류 메시지

우균 2011. 6. 10. 17:27
Gnu 컴파일러 g++를 사용하다가 다음과 같은 템플릿 오류가 발생하였다.

stack.cpp:19:1: error: 'Stack<T>::Stack' names the constructor, not the type
stack.cpp:19:1: error: and 'Stack<T>' has no template constructors
stack.cpp:22:1: error: expected unqualified-id before 'template'

이상하게도 Microsoft Visual Studio에서는 문제없이 컴파일되는데, g++에서는 오류 메시지가 나왔다. 오류의 원인은 템플릿 생성자 이름 때문이었는데, 수정하기 전 소스의 일부는 다음과 같다.

template <class T>
Stack<T>::Stack<T>(int size) : _top(0), _size(size) {
    _data = new T[size];
}

여기서 오류가 되었던 부분은 템플릿 생성자 이름이다. 생성자 이름에서 타입 인수 <T>를 제거하면, 즉 소스코드를 다음과 같이 변경하면 제대로 컴파일된다.

template <class T>
Stack<T>::Stack(int size) : _top(0), _size(size) {
    _data = new T[size];
}


Comments