| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Chucky Invitado
|
Publicado: Sab 11 Dic, 2004 4:53 pm Asunto: Ayuda error 2299 |
|
|
Buenas. Me he definido la siguiente plantilla y la siguiente clase (os pongo el .h de ambos). Como podréis ver he definido una cola genérica para utilizarla con cualquier clase T. Mi pregunta es ¿cómo se declara una variable que sea una cola de colas de enteros? Lo intente de la siguiente forma
TColaIterador<TColaIterador<int>> colaDeColas;
pero me da el error 2299 en el C++ builder 5.0 (Cannot generate template specialization from ‘TColaIterador<T>’). Por sirve de algo si tan solo declaro una cola de enteros de la siguiente forma
TColaIterador<int> colaDeEnteros;
funciona perfectamente. Espero que me podáis ayudar. Gracias de ante mano.
template <class T>
class TIterador{
public:
virtual void Principio ();
virtual T Actual ();
virtual void Siguiente();
virtual bool Valido ();
};
template <class T>
class TColaIterador: public TIterador <T>{
private:
struct Elemento {
T elemento;
Elemento *siguiente;
};
Elemento *pPrimero,*pUltimo,*pIterador;
int numElem;
public:
TColaIterador ();
void Principio ();
bool Valido ();
T Actual ();
void Siguiente ();
void Nuevo (T e);
T Primero();
bool esVacia();
void QuitaPrimero ();
T Ultimo();
bool Esta(T e);
int NumeroElementos();
~TColaIterador();
}; |
|
| Volver arriba |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Sab 11 Dic, 2004 6:49 pm Asunto: |
|
|
Podrías probar con | Código: | typedef TColaIterador<int> colaDeEnteros;
typedef TColaIterador<colaDeEnteros> colaDeColasDeEnteros;
colaDeColasDeEnteros miCola; |
Suerte. |
|
| Volver arriba |
|
 |
Ckuchy Invitado
|
Publicado: Sab 11 Dic, 2004 10:25 pm Asunto: |
|
|
Gracias por tu respuesta, ya había pensado en esa solución, pero no entiendo por que no funciona de la forma que lo estoy intentando cuando precisamente la utilidad de los TAD es esa.
Saludos. |
|
| Volver arriba |
|
 |
Chuchy Invitado
|
Publicado: Dom 12 Dic, 2004 1:02 am Asunto: |
|
|
Acabo de probarlo y me funciona pero ahora me da un nuevo problema. Tengo un archivo .h para la palntilla TIterador, sendos archivos .cpp y .h para mi TAD TColaIterador y un .cpp para lo que es el programa principal (estoy haciendo una aplicacion de consola). Desde el .h de TColaIterador hago #include "TIterador.h" y desde .cpp de programa hago #include "TColaIterador.h" . Pues el nuevo problema es que cada vez que voy a usar una cola de tipo TColaIterator se produce un linker error
| Código: | [Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::~TColaIterador<TColaIterador<int> >()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::~TColaIterador<int>()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::TColaIterador<TColaIterador<int> >()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::Actual()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Ultimo()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Esta(int)' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::TColaIterador<int>()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Nuevo(int)' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::NumeroElementos()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TIterador<int>::Principio()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TIterador<int>::Actual()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TIterador<int>::Siguiente()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TIterador<int>::Valido()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Principio()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Actual()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Siguiente()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<int>::Valido()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::Nuevo(TColaIterador<int>)' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::Siguiente()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::Valido()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ
[Linker Error] Unresolved external 'TColaIterador<TColaIterador<int> >::Ultimo()' referenced from H:\CARLOS\FDI\PRACTICAS LP2\MTP3\PROGRAMA.OBJ |
como podéis ver el problema nada tiene que ver con el anterior (o eso creo) pues también se produce al usar una cola de enteros. Haber si me podéis ayudar porque no se como solucionarlo. Gracias |
|
| Volver arriba |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Dom 12 Dic, 2004 1:29 am Asunto: |
|
|
Hola, Chucky.
En esto no te puedo ayudar, pero te puedo recomendar que eches un vistazo a la serie de Mario Rodríguez (Revista Síntesis) que empieza en su nº 3 (http://www.grupoalbor.com/sintesis/contenidos.php?id=03) y termina en el 13. De ahí he sacado muy buenas ideas sobre el funcionamiento de la librería estándar de C++.
Suerte. |
|
| Volver arriba |
|
 |
|