LinuxÒÁµéÔ°ÂÛ̳'s Archiver

ly19820701 ·¢±íÓÚ 2005-8-6 13:25

°ïÖú linunx C++ ѧϰ template class

TArray.h
#idndef TARRAY_H
#define TARRAY_H
template < class elemType >
class TArray {
explicit TArray ( int size = DefaultArraySize );
~TArray() { delete [] ia; }

int size () const { return _size; }
elemType operator[]( int index ) const { return ia[index]; }
#endif

TArray.cpp
#include "TArray.h"
template <class elemType>
TArray<elemType>::TArray( int size )
{
   _size = size;
   ia = new elemType[_size];
   for( int index = 0; index < _size; index++ )
      ia[index]=index;
}

useTArray.cpp
#include <iostream>
#include "TArray.h"
int main()
{
   TArray<int> arr1(8);
   TArray<double> arr2;

   return 0;
}

g++ useTArray.cpp TArray.cpp -g -o useTA
˵£ºundefined reference to 'TArray<int>::TArray(int)'
        undefined reference to 'TArray<double>::TArray(int)'

µ±°Ñ useTArray.cpp ÖÐ "TArray.h" »»³É "TArray.cpp" ʱ£¬ÎÞ´íÎó£¬Çë½Ì

dearvoid ·¢±íÓÚ 2005-8-7 11:50

´íÎóÌ«¶à£¡ÇëÖØÐÂд£¡

flag ·¢±íÓÚ 2005-8-8 16:34

¿´Â¥Ö÷µÄÀඨÒå·¨£¬ºÙºÙ£¬»¹ÒÔΪÊÇDephi¡­¡­

Jericho.Xu ·¢±íÓÚ 2005-8-18 11:59

TemplateºÃÏñ¶¨ÒåͬÉùÃ÷ÒªÔÚͬһ¸ö.hÎļþÀï

lauxp ·¢±íÓÚ 2005-11-17 17:34

ÏÈ¿´Ò»ÏÂÕâÌõÃüÁ
g++ useTArray.cpp TArray.cpp -g -o useTA
ʵÏÖÊÇ£¬±àÒëuseTArray.cpp£¬ ·¢ÏÖ
TArray<int> arr1(8);
TArray<double> arr2;
ËùÒÔÐèÒªÌæ»»£¬µ«ÊÇ´Ëʱ±àÒëÆ÷ÈÏΪÔÚÆäËûµØ·½ÒѾ­Õ¹¿ªÁË£¬ËùÒÔ¾ÍÒªµÈµ½ldµÄʱºò×ö¡£
ͬʱ£¬TArray.cpp £¬Ã»ÓÐ˵Ã÷Ò»¶¨ÒªÕ¹¿ªint, double°¢£¿
ËùÒÔÔÚldµÄʱºò¾Í»á·¢ÏÖûÓж¨Òå¡£

ÊÂʵÉÏ£¬ÓÐÁ½ÖÖ·½·¨¿ÉÒÔʵÏÖ£¬Ò»¸öÊǰüº¬includeģʽ£¬¾ÍÊÇÂ¥ÉϵØËµµÄ·ÅÔÚ.hxxÀïÃæ¡£
µ«ÊÇÕâÑù¿ÉÄÜÔì³É´úÂëµÄÅòÕÍ¡£
ÁíÍâÒ»ÖÖÊÇÖØÐÂдһ¸öÎļþinstantiation.cxx,È»ºó½øÐÐÌØ»¯
#include TArray.hxx
template<>
class TArray<int>{};
class TArray<double>{};
g++ useTArray.cpp TArray.cpp instantiation.cxx -g -o useTA
µ±È»ÕâÑù»¹ÊÇÓÐÎÊÌâ£¬ÌØ±ðÊÇÏîÄ¿ºÜ´óµÄʱºò£¬»á³öÏÖÖØ¸´instantiation¡£
Ò»°ã²ÉÓÃinclude Ä£ÐÍ.

½¨ÒéÄã¿´¿´C++ template

xuedone ·¢±íÓÚ 2005-11-20 15:13

ÎÒ´óÖ¿´ÁËһϣ¬´íÎóÈçÏ£º
1¡¢ÄãµÄ´úÂë´ò´í×ֵĵط½Óкü¸´¦£¬Æ©È磺TArray.hÖУ¬#ifndefÄã´ò³ÉÁË#iddef£¬º¹£¬ÕâÖÖ´íÎóÊÇд´úÂëµÄʱºòÄÑÒÔ±ÜÃâµÄ£¬¿ÉÊÇÈ´ÊÇ×îÍ·Ì۵쬲»¸Ã·¸µÄ´íÎó£¬Äþ¿É´òÂýµã£¬Ò²ÒªÈ·±£Ò»´Î´òÕýÈ·£¬ÕâºÃÏñСѧÉú¶¼ÖªµÀµÄ
2¡¢TArray.hÖÐÀàµÄ×îºóÄãÍüÁË};ÔÙº¹Ò»¸ö
3¡¢ÄãµÄÀàÖеijÉÔ±º¯ÊýÈ«²¿ÉùÃ÷Ϊ˽ÓУ¬¿ñº¹£¬ÄãÇ¿
4¡¢×îºóÔÙº¹Ò»´Î£¬ÄãµÄ´úÂëÎÒÊÇû·¨ÔÙ¿´ÏÂÈ¥ÁË£¬¼òÖ±¾ÍÊÇÒ»ÍÅÂÒÂé
ÎÒ¿´Â¥Ö÷»¹ÊÇ»ØÈ¥ºÃºÃ¿´C++ Primer ºÍThinking in C++£¬ÔÙ¿´¿´HoUJJµÄGeneric Programming and STL£¬»òÕßÊÇC++ Template°É¡£¡£¡£
»ù´¡ÊÇ×îÖØÒªµÄ£¬²»Òª¼±ÓÚÇó³É£¬ÂýÂýÀ´
Ò»²½Ò»²½

rushrush ·¢±íÓÚ 2006-1-7 01:55

¿ÉÒÔÓÃһЩ´úÂë×Ô¶¯²¹È«¹¤¾ßÀ´½â¾öÒÔÉÏÒ»¶þµãÎÊÌâ... 0_0

kingsu555 ·¢±íÓÚ 2007-1-26 03:07

TEMPLATE Á½ÖÖ±àÒëģʽ
°üº¬ºÍ·ÖÀë.

LZ×Ô¼ºÈ¥¿´¿´°É

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.