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

Responder a