Шаблоны и статические элементы класса
От: GromRom Россия  
Дата: 27.04.02 06:31
Оценка:
Такая проблемка — первый (или второй) раз в жизни использую шаблоны
Есть класс:


//__________________________ В .h файле ______________________

template <class T>
class GabrialProtokol{

private:
  //Функции:
   bool ParseFile(CString);
   bool ParseLine(CString, CString*);
   int GetNumOfLines(CString)const;

  //Данные:

   static const TCHAR END_OF_LINE;
   static const TCHAR START_OF_TERM;
   static LPCTSTR END_OF_TERM1;
   static const TCHAR END_OF_TERM2[2];
   static const TCHAR* Monthes[12];
};





//__________________________ В .cpp файле ______________________

//Методы класса определяем так :  (с этим нет проблемм)

template <class T>
int GabrialProtokol<T>::GetNumOfLines(CString Str)const{
......
}



и так далее...

а во с определением статических данных проблема!!!
Пишу так :
const TCHAR GabrialProtokol<T>::END_OF_LINE = '\n';
const TCHAR GabrialProtokol<T>::START_OF_TERM = '\"';
LPCTSTR GabrialProtokol<T>::END_OF_TERM1 = {"\","};
const TCHAR GabrialProtokol<T>::END_OF_TERM2[2]= {'\"', 13};


оно ругается :
H:\My PROJECTS\C++ Projects\Test&Try\LocalServerAgent\GabrialProtokol.cpp(20) : error C2065: 'T' : undeclared identifier
H:\My PROJECTS\C++ Projects\Test&Try\LocalServerAgent\GabrialProtokol.cpp(20) : error C2955: 'GabrialProtokol' : use of class template requires template argument list
h:\my projects\c++ projects\test&try\localserveragent\gabrialprotokol.h(46) : see declaration of 'GabrialProtokol'
H:\My PROJECTS\C++ Projects\Test&Try\LocalServerAgent\GabrialProtokol.cpp(20) : fatal error C1903: unable to recover from previous error(s); stopping compilation


Если пишу вот так:
template <class T>
const TCHAR GabrialProtokol<T>::END_OF_LINE = '\n';
template <class T>
const TCHAR GabrialProtokol<T>::START_OF_TERM = '\"';
template <class T>
LPCTSTR GabrialProtokol<T>::END_OF_TERM1 = {"\","};
template <class T>
const TCHAR GabrialProtokol<T>::END_OF_TERM2[2]= {'\"', 13};


Оно Ещё сильнее ругается !!! (на все функции в этом классе)

DBSaver.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall GabrialProtokol<int>::~GabrialProtokol<int>(void)" (??1?$GabrialProtokol@H@@UAE@XZ)

DBSaver.obj : error LNK2001: unresolved external symbol "public: __thiscall GabrialProtokol<int>::GabrialProtokol<int>(void)" (??0?$GabrialProtokol@H@@QAE@XZ)

и так про каждую....


Что делать ????
Девиз настоящих студентов: Не боись — ПРОРВЁМСЯ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.