C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[24216] Re:Re: 답변 감사한데요.. 다른 방법으로처리했습니다.
초보자 [] 857 읽음    2003-02-11 05:01
김백일.cedar 님이 쓰신 글 :
: 초보자 님이 쓰신 글 :
: : //헤더파일
: :
: : template <class T> class _Object
: : {
: : public:
: :         _Object();
: : }
: :
: :
: : class _ddd : public _Object<_ddd>
: : {
: : public:
: :         _ddd();
: : }
: :
: :
: :
: : //소스파일
: :
: : template <class T> _Object<T>::_Object()
: : {
: : // 어쩌구 저쩌구
: : }
: :
: : _ddd::_ddd() : _Object<_ddd>()
: : {
: : //   ...
: : }
: :
: :
: :
: :
: : 위처럼 코딩하고 컴파일 하면
: :
: : Linker Error - Unresolved external '_Object<_ddd>::_Object<_ddd>()'
: : referenced form c:\......
: :
: : 이 나옵니다.
: :
: : 문법상으론 틀린게 없는거 같은데.. 왜그런거죠??
: :
: : 그리고 그외의 상속받은 함수들을 쓸려고 하면 다 위의 링커 에러가 뜹니다..
: :
: : 왜그런지. 꼭 알려주세요...
:
: 템플릿(template)은 말 그대로 '틀'입니다.
: 템플릿 클래스는 클래스를 (붕어빵을 찍어내득) 찍어내는 틀일 뿐이지 클래스 자체가 아니죠.
: 그래서 'Object<_ddd>::_Object<_ddd>()'는 당연히 오브젝트 파일에 존재하지 않습니다.
: 템플릿을 사용한 코드는 별도의 '소스파일'이나 오브젝트(obj), 라이브러리(lib, dll)로 만들 수가 없고, 반드시 '헤더파일'에만 존재해야 합니다.
: 그러니까 그냥 헤더파일에 템플릿을 사용한 모든 코드를 다 넣으시면 됩니다.
: 즉, 템플릿 라이브러리는 항상 헤더파일 형태로만 존재합니다.
: 그러므로 컴파일 시간이 오래걸리는 단점이 있지요.
:


아는 형이 기반 클래스의 함수를 가상함수로 바꿔보라구 하길래

기반 클래스의 함수를 가상함수로 설정해주니깐 되네요;;

님의 설명과 제가 지금 쓰고있는걸 어떻게 연결야 하죠?

+ -

관련 글 리스트
24194 template class 상속에 관해서.. 초보자 1462 2003/02/10
24203     Re:template class 상속에 관해서.. 김백일.cedar 1212 2003/02/10
24216         Re:Re: 답변 감사한데요.. 다른 방법으로처리했습니다. 초보자 857 2003/02/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.