Такая проблемка — первый (или второй) раз в жизни использую шаблоны
Есть класс:
//__________________________ В .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)
и так про каждую....
Что делать ????