Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas con templates

Iniciado por CoLSoN2, 28 de Diciembre de 2002, 03:39:15 AM

« anterior - próximo »

CoLSoN2

                                veamos, tengo 3 ficheros (3 h y 3 cpp):
cJugador, cManager y tLista
- tLista es un template para listas doblemente enlazadas
- Jugador se sobreentiende
- manager es un manager de jugadores, que contiene una lista de ellos

pues bien, si en el manager tengo


lista<jugador> c00llist;


y luego en los metodos hago


c00llist.Add(jugador1);

c00llist.Delete(jugador1)

etc


me da estos errroes en el linkeo:


APP_tManager.obj : error LNK2001: unresolved external symbol "public: void __thiscall W3C_APP_List<class W3C_APP_Player>::Delete(int)" (?Delete@?$W3C_APP_List@VW3C_APP_Player@@@@QAEXH@Z)


<- 1 x cada metodo de la lista llamado dsd el manager

sabeis que pasa?                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Grugnorr

                                Prueba si te funciona la lista con tipos predefinidos(int por ejemplo)

Pega el código de la lista ;)                                
hat the hells!

ethernet

Mas claro el agua, no encuentra las implementaciones de la clase. Recuerda poner todas las implementaciones en los .h.

Por q no usas std::list ?

saludos

Grugnorr

                                Sips, tiene toda la pinta de que ha puesto la implementación en el .cpp                                
hat the hells!

CoLSoN2

                               
CitarPega el código de la lista
aquí está:


template <class T>

class W3C_APP_List

{

public:

struct sITEM {

 T dt;

 int id;

};

struct sLISTNODE {

 sITEM data;

 sLISTNODE *next;

 sLISTNODE *prev;

 sLISTNODE() {

  next = NULL;

  prev = NULL;

 }

 ~sLISTNODE()

 {

  if (next) delete next;

  if (prev) delete prev;

 }

};



sLISTNODE *first;

int numElements;



W3C_APP_List() {

 first = NULL;

 numElements = 0;

}

~W3C_APP_List() { DeleteAll(); }

int Add(const T temp);

void Delete(const int id);

void DeleteAll();

};



/*

* lista.cpp

*/

template <class T>

int W3C_APP_List<T>::Add(const T temp)

{

sLISTNODE *pnode = first;

int ID = 0;



if (!pnode)

{

 pnode = new sLISTNODE();

 pnode->next = NULL;

 pnode->prev = NULL;

 pnode->data.id = ID;

 pnode->data.dt = T;     // operador '=' sobrecargado

}

else

{

 ID++;

 while (pnode->next)

 {

  pnode = pnode->next;

  ID++;

 }

 pnode->next = new sLISTNODE();

 sLISTNODE *aux = pnode;

 pnode = pnode->next;

 pnode->next = NULL;

 pnode->prev = aux;

 pnode->data.id = ID;

 pnode->data.dt = T;

}



numElements++;



return ID;

}



template <class T>

void W3C_APP_List<T>::DeleteAll()

{

for (int i=0;i<numElements;i++)

{

 Delete(i);

}

}



template <class T>

void W3C_APP_List<T>::Delete(int ID)

{

sLISTNODE *pnode = first;



while(pnode->data.id != ID)

 pnode = pnode->next;



if (!pnode->prev)

{

 pnode->next->prev = NULL;

 first = pnode->next;

}

else

{

 pnode->prev->next = pnode->next;

}



delete pnode;

}





Citar
Por q no usas std::list ?  
porque me liaba, aunque quizá lo intente XD


Citar
Sips, tiene toda la pinta de que ha puesto la implementación en el .cpp
dónde voy aponer las implementaciones sino es en el cpp ? ..                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet

Las implementaciones de funciones con templates se ponen en el .h. Ahora entenderas el porq yo hago eso amenudo y me criticas(ais) xD.

saludos

CoLSoN2

                                aaaahhh vaaaaleeeee XDDDDD

;**                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet


CoLSoN2

                                ;******                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet


CoLSoN2

                                :C====(_(_)                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet


CoLSoN2

                                ni yo eso de ti

d|ò·Ó|b                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.