Что сказал линкер:
| Код | Linking... Main.obj : error LNK2019: unresolved external symbol "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,class List<class NumString> &)" (??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$List@VNumString@@@@@Z) referenced in function _main C:\Documents and Settings\Tigo\Мои документы\Visual Studio 2005\Projects\Lab4\Debug\Lab1.exe : fatal error LNK1120: 1 unresolved externals
|
Код собственно:
| Код | #ifndef _List
#include <string.h> #include <string> #include <stdlib.h> #include <iostream>
using namespace std;
template <class T> struct Elem { Elem<T> *Next; //Next element T *Obj; //Object };
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
//friend std::istream &operator>>(std::istream &,List<T> &); friend std::istream &operator>>(std::istream &, List<T> &); };
template <class T> List <T>::List(T Obj) { N=1; Head=new Elem<T>; Head->Next=NULL; Head->Obj=new T; *(Head->Obj)=Obj; };
template <class T> List <T>::List(void) { N=0; Head=NULL; };
template <class T> void List <T>::AddElem(T &AElem, int Num) { if (N==0) { N=1; Head=new Elem<T>; Head->Next=NULL; Head->Obj=new T; *(Head->Obj)=AElem; return; } if (N<Num) { Elem<T> *p=Head; for (;p->Next!=NULL;p=p->Next); p->Next=new Elem<T>; p->Next->Next=NULL; p->Next->Obj=new T; *(p->Next->Obj)=AElem; N++; return; } if (Num<=1) { Elem<T> *q,*p=Head; q=new Elem<T>; q->Next=p; Head=q; q->Obj=new T; *(q->Obj)=AElem; N++; return; } Elem<T> *q=Head,*p=q->Next; for(int i=2;i<Num;i++,q=p,p=p->Next); q->Next=new Elem<T>; q->Next->Next=p; q->Next->Obj=new T; *(q->Next->Obj)=AElem; N++; return; }
template <class T> void List<T>::DelElem(int Num) { Elem<T> *q=Head,*p=q->Next; if ((Num<1)||(Num>N)) return; if (Num!=1) { for (int i=2;i<Num;i++,q=p,p=p->Next); delete p->Obj; p=p->Next; delete q->Next; q->Next=p; N--; return; } delete q->Obj; delete q; Head=p; N--; return; }
template <class T> int List<T>::Max(int k) { int i,m=1; if (Head==NULL) return NULL; Elem<T> *q=Head,*p=q->Next; for (i=1;p!=NULL&&i<k;p=p->Next,i++) if (*(q->Obj)<*(p->Obj)) { q=p; m=i+1; } return m; }
template <class T> int List<T>::Min(int k) { int i,m=1; if (Head==NULL) return NULL; Elem<T> *q=Head,*p=q->Next; for (i=1;p!=NULL&&i<k;p=p->Next,i++) if (*(q->Obj)>*(p->Obj)) { q=p; m=i+1; } return m; }
template <class T> void List<T>::Sort(void) { for (int k=N;k>0;k--){ int m=Min(k); T PObj; PObj=*(Get(m)->Obj); DelElem(m); this->AddElem(PObj,N+1); } return; }
template <class T> Elem<T> *List<T>::Get(int k) { Elem<T> *q=Head; if (k<1) return NULL; for (int i=1;i!=k&&q!=NULL;q=q->Next,i++); return q; }
/*template <class T> std::istream &operator>>(std::istream& IO, List<T> &Spisok) { *T Obj; IO >> Obj; Spisok.AddElem(Obj,0); return IO; }*/ template <class T> std::istream &operator>>(std::istream &IO, List<T> &Spisok) { T Obj; IO >> Obj; Spisok.AddElem(Obj,0); return IO; }
#define _List #endif
|
Помогите чем сможете, пожалуйста =) Всем заранее спасибо |