list<AnsiString> da errores inexpicables hasta ahora

jpalvaradom
03 de Junio del 2006
este es el codigo de mi lista
#include "node.h"
#include <stdlib.h>
#include <iostream.h>

#ifndef list_h
#define list_h
template <class TYPE>
class list
{
private:
node<TYPE>* _cab;
node<TYPE>* _current;
public:
list();
void Zero();
void Annuls();
void Insert(TYPE);
void Go();
TYPE Recover();
void First();
bool IntheList();
bool Void();
bool Search(TYPE);
};
template<class TYPE>
list<TYPE>::list()
{
_cab=new node<TYPE>;
_current=_cab;
}
template<class TYPE>
void list<TYPE>::Go()
{
_current=_current->_sgte;
}
template<class TYPE>
void list<TYPE>::Annuls()
{
_cab->_sgte=0;
_current=_cab;
}
template<class TYPE>
void list<TYPE>::Zero()
{
_current=_cab;
}
template<class TYPE>
void list<TYPE>::Insert(TYPE x)
{
node<TYPE> * p=new node<TYPE>;
p->_data=x;
p->_sgte=_current->_sgte;
_current->_sgte=p;
_current=p;
}
template<class TYPE>
void list<TYPE>::First()
{
if(_cab->_sgte)
_current=_cab->_sgte;
else
Zero();
}
template<class TYPE>
TYPE list<TYPE>::Recover()
{
return _current->_data;
}
template<class TYPE>
bool list<TYPE>::Void()
{
return (_cab->_sgte==0);
}
template<class TYPE>
bool list<TYPE>::Search(TYPE x)
{
node<TYPE>* Ux=_cab->_sgte;
while(Ux)
{
if(Ux->_data==x)
{
_current=Ux;
return true;
}
Ux=Ux->_sgte;
}
return false;
}
template<class TYPE>
bool list<TYPE>::IntheList()
{
if(_current && _current!=_cab)
return true;
else
{
Zero();
return false;
}
}
#endif

ahora en otra clase hago esto
list<AnsiString> L;
Inserta bien
pero me da errores al ejecutar el Recover y el Search
de verdad no se lo que puede ser ojala me puedan ayudar