SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: diego.martinez en Miércoles 30 de Abril de 2008, 10:48

Título: Linkar Templates
Publicado por: diego.martinez en Miércoles 30 de Abril de 2008, 10:48
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.
Título: Re: Linkar Templates
Publicado por: Eternal Idol en Miércoles 30 de Abril de 2008, 11:29
Para templates export solo lo soporta un compilador, otras soluciones:
http://www.parashift.com/c++-faq-lite/temp....html#faq-35.12 (http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12)