Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Templates C++

Iniciado por zupervaca, 05 de Agosto de 2005, 01:54:46 PM

« anterior - próximo »

zupervaca

 tengo un problema con los templates en c++ desde el .net 2003, tengo un .h y un .cpp que son estos:
  template <class t>
  class pruebas
  {
  public:
   pruebas();
   ~pruebas();

  };

  template <class t> pruebas<t>::pruebas()
  {
  }

  template <class t> pruebas<t>::~pruebas()
  {
  }

pues cuando intento crear la clase me dice que no encuentra el constructor, si lo pongo en el .h me funciona bien, el .cpp esta incluido en el proyecto con lo que esta compilandolo bien, ¿que sucede?

saludos

Pogacha

 Estas poniendo las definiciones y declaraciones en el .h?
Se requieren ambas en el .h o en el mismo hilo de compilación para que ande.
Saludos.

PD: no habia leido esto.
Citarpues cuando intento crear la clase me dice que no encuentra el constructor, si lo pongo en el .h me funciona bien, el .cpp esta incluido en el proyecto con lo que esta compilandolo bien, ¿que sucede?
Exactamente ... las funciones las crea una ves la instancia:

pruebas a; // aca sale corriendo y crea el juego de funciones templadas en int!

Re-Saludos

PD2: Aqui lo explica
http://babbage.cs.qc.edu/STL_Docs/templates.htm

zupervaca

 el ejemplo que pone de b.h y b.cpp no me funcione me da el mismo error que con pruebas.h y pruebas.cpp, es que esto antes funcionaba bien, realmente no lo entiendo

Pogacha

 Ese ejemplo que pone es para mostrarte que no anda así!

CitarWhen compiling B.cpp, the compiler has both the declarations and the definitions available. At this point the compiler does not need to generate any definitions for template classes, since there are no instantiations. When the compiler compiles main.cpp, there are two instantiations: template class B and B. At this point the compiler has the declarations but no definitions!

Traducido (por las dudas):
CitarCuando compila B.cpp, el compilador tiene sendas declaraciones y definiciones disponibles. En este punto el compilador no necesita generar definiciones para clases templadas, ya que no hay instanciaciones. Cuando el compilador compila main.cpp, hay dos instanciaciones, template class B y B. En este punto el compilador tiene declaraciones pero no definiciones!
Y esto es por que no anda, en las clases templables debes poner todas las declaraciones así como las definiciones en el mismo .h
Saludos.

zupervaca

 aps perdona es que no lo lei, directamente mire el codigo, vaya pues yo hace tiempo cuando usaba mas amenudo los templates me parece que usaba .h y .cpp, na pero esta claro que solo es el .h

gracias tiu






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.