LINUX.ORG.RU

Сообщения PirateTigo

 

C++ , Шаблоны, ошибка линкера LNK2019

У меня имеется класс:
template <class T>
class List {
	int N;							//Number of elements
	Elem<T> *Head;					//Head of list
public:
//Constructors
	List(void);
	List(T&);

//Methods
	void AddElem (T&, int);			//Additional Elem to List by logical number
	void DelElem (int);				//Delete Elem by logical number
	int Max (int);					//Search maximum of elements
	int Min (int);					//Search minimum of elements
	void Sort (void);				//Sorting insets
	Elem<T> *Get (int);				//Get point to Elem by set number
	
//Operations for work with streams
	friend std::istream &operator>><>(std::istream &,List<T> &);
	int Save (char *);				//Save list into the set file
	
};

Компиляция проходит успешно, а вот при линковке выдается сообщение:
error LNK2019: unresolved external symbol "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl >>(class std::basic_istream<char,struct std::char_traits<char> > &,class List<class NumString> &)" (?>>@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV12@AAV?$List@VNumStr
ing@@@@@Z) referenced in function _main

Причем когда комменчу определение функции Save  и ее реализацию, то все линкуется на ура.

Вот реализация функции Save:

int List<NumString>::Save(char *s)
{/*
	FPTR pos;
	BinFile BF;
	if (!BF.Create(s)) return 0;
	if (!BF.Open(s)) return 0;
	pos=BF.tellg();
	Elem<NumString> *ptr=Head;	
	for (int i=0;i<N;i++)
	{
		ptr->Obj->Save(s,pos);
		pos=BF.tellg();
		ptr=ptr->Next;
	} */
	return 1;
}

А также реализация оператора >>, о коем упоминается в ошибке линковщика:

template <class T>
std::istream &operator>>(std::istream& IO, List<T> &Spisok)
{//IO - input stream, Spisok - List of objects
	T Obj;
	IO >> Obj;
	Spisok.AddElem(Obj,0);
	return IO;
}

Скажите, пожалуйста, что я сделал не так и возможно ли вообще такое опредение функции Save (я явно указал значение параметра шаблона). Заранее спасибо!

>>>

PirateTigo
()

RSS подписка на новые темы