• Domingo 15 de Diciembre de 2024, 18:42

Autor Tema:  Linkar Templates  (Leído 871 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Linkar Templates
« en: Miércoles 30 de Abril de 2008, 10:48 »
0
Buenas:

Recientemente me he encontrado con un problema al usar plantillas.

es un codigo de prueba:

Código: Text
  1.  
  2. //------------------------------------------------------ Main.cpp
  3. #include <windows.h>
  4. #include <stdio.h>
  5. #include "templatea.h"
  6.  
  7. int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lp,int nShowCmd)
  8. {
  9.  
  10.  A < C > Prueba;
  11.  
  12.   char s[100];
  13.  
  14.   sprintf(s,"Valor %d",Prueba.Get());
  15.   MessageBox(0,s,0,0);
  16.   return 0;
  17. }
  18.  
  19.  

Código: Text
  1.  
  2. //------------------------------------ TemplateA.h
  3. #include "templateb.h"
  4.  
  5. template <class T>
  6. class A
  7. {
  8. public:
  9.   T data;
  10.   int Get();
  11. };
  12.  
  13.  



Código: Text
  1.  
  2. //------------------------------------ TemplateA.cpp
  3. #include "templatea.h"
  4.  
  5. template <class T> int A<T>::Get() { return data.Get();}
  6.  
  7.  

Me da problemas al Linkar:
 main.obj : error LNK2019: unresolved external symbol "public: int __thiscall A<class C>::Get(void)" (?Get@?$A@VC@@@@QAEHXZ) referenced in function _WinMain@16
Debug/TemplatePru.cpp.exe : fatal error LNK1120: 1 unresolved externals


he leido que hay que usar export en estos casos, pero si lo pongo el VS2003 me da error de sintaxis.

que puedo hacer para poder poner el codigo en los cpp?

Muchas Gracias por anticipado.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Linkar Templates
« Respuesta #1 en: Miércoles 30 de Abril de 2008, 11:29 »
0
Para templates export solo lo soporta un compilador, otras soluciones:
http://www.parashift.com/c++-faq-lite/temp....html#faq-35.12

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.