Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bash en 2 Mayo 2011, 05:28 am



Título: template undefined reference : help.
Publicado por: bash en 2 Mayo 2011, 05:28 am
buenas a todos he estado practicando la programacion generica
entonces me surgio mesclarla con punteros  entonces cuando compilo me aparece un error.

veamos :


compiler : gcc
Ide         : code::block
s.o         : windows xp ..
 


codigo:

header.hpp
Código
  1. #include <iostream>
  2. #include <utility>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. template<class T>
  9. class Array{
  10.    private:
  11.  
  12.    T *ptr_tipo;
  13.    T  tipo;
  14.  
  15.  
  16.    public:
  17.  
  18.    Array(T val, unsigned int siz);
  19.  
  20. };
  21.  
  22.  

def.cpp
Código
  1. #include "header.hpp"
  2.  
  3.  
  4. template<class T>
  5. Array<T>::Array(T val, unsigned int siz){
  6.  
  7.    ptr_tipo = 0L;
  8.    ptr_tipo = new T;
  9. }
  10.  



main.cpp

Código
  1. #include <iostream>
  2. #include "header.hpp"
  3. using namespace std;
  4.  
  5.  
  6.  
  7. int main()
  8. {
  9.  Array<int> arreglo(12, 45);
  10.  
  11.  return 0;
  12.  }
  13.  

entonces cuando compilo me da eso:

obj\Release\main.o:main.cpp|| undefined reference to `Array<int>::Array(int, unsigned int)'|
||=== Build finished: 1 errors, 0 warnings ===|


la verdad me pasa a menudo con cualquier app
les agradeceria ayuda.


GRACIAS.




Título: Re: template undefined reference : help.
Publicado por: satu en 2 Mayo 2011, 11:48 am
Hola

Cuando se utilizan templates se implementan las funciones en el .h


header.hpp
Código
  1. #include <iostream>
  2. #include <utility>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. template<class T>
  9. class Array{
  10.    private:
  11.  
  12.    T *ptr_tipo;
  13.    T  tipo;
  14.  
  15.  
  16.    public:
  17.  
  18.    Array(T val, unsigned int siz);
  19.  
  20. };
  21.  
  22.  
  23. template<class T>
  24. Array<T>::Array(T val, unsigned int siz){
  25.  
  26.    ptr_tipo = 0L;
  27.    ptr_tipo = new T;
  28. }
  29.  
  30.  


main.cpp

Código
  1. #include <iostream>
  2. #include "header.hpp"
  3. using namespace std;
  4.  
  5.  
  6.  
  7. int main()
  8. {
  9.  Array<int> arreglo(12, 45);
  10.  
  11.  return 0;
  12.  }
  13.  



Saludos


Título: Re: template undefined reference : help.
Publicado por: bash en 2 Mayo 2011, 19:09 pm
es cierto , luego de escribir me puse en eso y compilo si incluia el otro .cpp

me dio el mismo error pero con eso que me dijiste ya resolvi
gracias.. de veras que si.