Martin,
Este tipo de cosas son las limitaciones de los Template de C++, lo
podes salvar si en lugar de atributo miembro MiOtraTemplate.atributo lo
pones como puntero.
Saludos
On 5/28/07, Martin Gorostegui <[EMAIL PROTECTED]> wrote:
Hola,
Estoy obteniendo un error bajo Visual c++ 6 al intentar implementar 2
templates que se usan entre si. El error lo pude aislar en un ejemplito
simple que muestro a continuacion:
MiTemplate.h:
==========
#ifndef MITEMPLATE_H_
#define MITEMPLATE_H_
#include "MiOtraTemplate.h"
template<class MiClase> class MiTemplate {
public:
void probarUsoTemplate() {
MiClase *clase = new MiClase();
clase->mostrarMensaje();
delete clase;
}
MiOtraTemplate<MiClase>* hacerAlgoConOtraTemplate() {
return new MiOtraTemplate<MiClase>;
}
};
#endif
MiOtraTemplate.h:
==============
#ifndef MIOTRATEMPLATE_H_
#define MIOTRATEMPLATE_H_
#include "MiTemplate.h"
template<class MiClase> class MiOtraTemplate {
private:
MiTemplate<MiClase> atributo;
};
#endif
Alguien tiene idea de como puedo solucionar este tema?
El error que me reporta el Visual es el siguiente:
*f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(9)
: error C2143: syntax error : missing ';' before '<'
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(11)
: see reference to class template instantiation 'MiOtraTemplate<MiClase>'
being compiled
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(9)
: error C2501: 'MiTemplate' : missing storage-class or type specifiers
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(11)
: see reference to class template instantiation 'MiOtraTemplate<MiClase>'
being compiled
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(9)
: error C2059: syntax error : '<'
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(11)
: see reference to class template instantiation 'MiOtraTemplate<MiClase>'
being compiled
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(9)
: error C2238: unexpected token(s) preceding ';'
f:\materiasactuales\datos07\trabajospracticos\tp1\pruebatemplates\pruebatemplates\miotratemplate.h(11)
: see reference to class template instantiation 'MiOtraTemplate<MiClase>'
being compiled
Generating Code...
Error executing cl.exe.*
*PruebaTemplates.exe - 4 error(s), 0 warning(s)*
Gracias,
Martin
------------------------------
*Preguntá. Respondé. Descubrí.*
Todo lo que querías saber, y lo que ni imaginabas,
está en *Yahoo! Respuestas* (Beta).
*¡Probalo ya! <http://ar.answers.yahoo.com>*
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion