Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.227.102.0] |
|
Сообщ.
#1
,
|
|
|
воть. понадобились темплейты. и сpазy косяк. пpимеp взят из мсдн. ************* h ************************** template <class T, int i> class TempClass { public: TempClass( void ); ~TempClass( void ); int MemberSet( T a, int b ); private: T Tarray[i]; int arraysize; }; ********************************************* ************** cpp ************************** template <class T, int i> TempClass< T, i >::TempClass( void ) { TRACE( "TempClass created.\n" ); } template <class T, int i> TempClass< T, i >::~TempClass( void ) { TRACE( "TempClass destroyed.\n" ); } template <class T, int i> int TempClass< T, i >::MemberSet( T a, int b ) { if( ( b >= 0 ) && (b < i) ) { Tarray[b++] = a; return sizeof( a ); } else return -1; } ********************************************* все компилится ок. но пpи попытке обьявления экземпляpа, напpимеp TempClass<int, 2> aaa; линкеp еppоp на констpyктоpе и дестpyктоpе. не может он их найти. error lnk2001: unresolved external symbol "public: __thiscall и т.д." подобная хpень замечена также на пpодyктах боланда. в чем пpикол. ведь синстаксически, как я понимаю. все пpавильно. |
Сообщ.
#2
,
|
|
|
А компилятор какой ? Под борландскими bcc32 5.01 и bcc32 5.5 и гнутым gcc 2.96.2 всё ок компилится и работает. Как определяется TRACE ? |
Сообщ.
#3
,
|
|
|
сколько же народу косят эти template'ты
ПИШИ ВСЕ В .h и будет тебе счастье |
Сообщ.
#4
,
|
|
|
да, есть такое неудобство.. и по моему это не только в VC, а еще очень много где.
писать не только функции, но и их тела в .h - бр.. это изващение, но по другому что то по моему никак. и по моему это связанно с тем что к .cpp может быть подключено несколько .h файлов. |
Сообщ.
#5
,
|
|||||
|
потому что шаблон это не тело функции
это не тело
вот это - тело и пиши его в спп |