• Martes 14 de Abril de 2026, 17:16

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - etchner

Páginas: [1]
1
C/C++ / undefined reference to 'nombre de funcion'
« en: Miércoles 4 de Mayo de 2011, 16:53 »
Hola

Estaba practicando con el uso de plantillas en c++, y tengo el siguiente codigo

Fichero Conjunto.h
Código: Text
  1.  
  2.     template <class TIPOP>
  3.     class posicion;
  4.      
  5.     template <class TIPO>
  6.     class conjunto{
  7.     public:
  8.      
  9.             conjunto();
  10.      
  11.             conjunto(const conjunto &c);
  12.      
  13.             bool pertenece(TIPO elem) const;
  14.      
  15.             void insertar(TIPO elem);
  16.      
  17.             void borrar(TIPO elem);
  18.      
  19.      
  20.             bool vacio(TIPO elem) const;
  21.      
  22.      
  23.             posicion<TIPO> begin();
  24.      
  25.             posicion<TIPO> end();
  26.      
  27.      
  28.             posicion<TIPO> siguiente(posicion<TIPO> posic);
  29.      
  30.             TIPO& elemento(posicion<TIPO> posic);
  31.      
  32.      
  33.             const TIPO& elemento(posicion<TIPO> posic) const;
  34.      
  35.      
  36.             TIPO& elemento(int posic);
  37.      
  38.      
  39.             int getCardinalidad();
  40.      
  41.     private:
  42.             void resize(int tam);
  43.            
  44.             TIPO* elementos;
  45.             int cardinalidad;      
  46.      
  47.     };
  48.      
  49.     template <class TIPOP>
  50.     class posicion{
  51.             conjunto<TIPOP> subconjunto;
  52.             int indice;
  53.     };
  54.  


Fichero Conjunto.cpp

Código: Text
  1.     #include<Conjunto.h>
  2.      
  3.                     conjunto<TIPO>::conjunto(){}
  4.      
  5.                     conjunto<TIPO>::conjunto(const conjunto<TIPO> &c){}
  6.      
  7.     bool            conjunto<TIPO>::pertenece(TIPO elem) const{}
  8.      
  9.     void            conjunto<TIPO>::insertar(TIPO elem){}
  10.      
  11.     void            conjunto<TIPO>::borrar(TIPO elem){}
  12.      
  13.     bool            conjunto<TIPO>::vacio(TIPO elem) const{}
  14.      
  15.     posicion<TIPO>  conjunto<TIPO>::begin(){}
  16.      
  17.     posicion<TIPO>  conjunto<TIPO>::end(){}
  18.      
  19.     posicion<TIPO>  conjunto<TIPO>::siguiente(posicion<TIPO> posic){}
  20.      
  21.     TIPO&           conjunto<TIPO>::elemento(posicion<TIPO> posic){}
  22.      
  23.     TIPO&           conjunto<TIPO>::elemento(int posic){}
  24.      
  25.     const TIPO&     conjunto<TIPO>::elemento(posicion<TIPO> posic) const{}
  26.  
  27.  

Fichero usoConjunto.cpp
Código: Text
  1.  
  2.     #include "Conjunto.h"
  3.      
  4.     using namespace std;
  5.      
  6.     conjunto<int> unionc(conjunto<int> c1, conjunto<int> c2){
  7.      
  8.             conjunto<int> nuevo;
  9.             for(int c = 0; c < c1.getCardinalidad(); c++){
  10.                     nuevo.insertar(c1.elemento(c));
  11.             }
  12.      
  13.             for (int a = 0; a < c2.getCardinalidad();a++){
  14.                     nuevo.insertar(c2.elemento(a));
  15.             }
  16.      
  17.             return nuevo;
  18.     }
  19.      
  20.      
  21.     int main(){}
  22.  

Al compilarlo con make, me da la siguiente salida:

usoConjunto.cpp:(.text+0x1b): undefined reference to `conjunto<int>::conjunto()'
usoConjunto.cpp:(.text+0x35): undefined reference to `conjunto<int>::elemento(int)'
usoConjunto.cpp:(.text+0x44): undefined reference to `conjunto<int>::insertar(int)'
usoConjunto.cpp:(.text+0x54): undefined reference to `conjunto<int>::getCardinalidad()'
usoConjunto.cpp:(.text+0x78): undefined reference to `conjunto<int>::elemento(int)'
usoConjunto.cpp:(.text+0x87): undefined reference to `conjunto<int>::insertar(int)'
usoConjunto.cpp:(.text+0x97): undefined reference to `conjunto<int>::getCardinalidad()'


He buscado por internet y por lo que veo hay un error al enlazar, pero no se como solucionarlo :S

Páginas: [1]