어떤 컴파일러에서는 template 을 사용한 클래스를 자동으로 생성하지 않는다. 즉 다음과 같은 template 을 사용하는 class 에서
template class TVector {
...
};
다음과 같이 사용한다고 하자.
...
TVector *foo = NULL;
...
이렇게 하는 경우, TVector
에 대한 클래스 정의가 없기 때문에 관련 메소드를 부르는 데 문제가 생긴다. 똑똑한 C++ 컴파일러의 경우 이 클래스 정의가 없더라고 자동으로 생성해서 없는 부분을 채워주기도 하지만 일부 컴파일러에서는 undefined symbol 에러가 발생한다. 이를 수정하기 위해서는 cpp 파일 어딘가에 다음과 같은 정의를 하면 된다.
template class TVector;
이와 관련된 게시물을 http://docs.freebsd.org/info/g++FAQ/g++FAQ.info.undefined_templates.html 에서 찾아볼 수 있다.
댓글 없음:
댓글 쓰기