Autor
|
Tema: Error de compilación en Dev C++ raro (Leído 5,300 veces)
|
Kasswed
|
Buenas no trabajo casi nada con Windows ni con Dev C++, así que no sé muy bien a qué es debido este error. Yo tengo un proyecto con tres archivos: main.cpp #include <iostream> #include "vectordinamico.h" using namespace std; int main(){ vectorDinamico<int> aux(5); }
vectordinamico.h #ifndef __VECTORDINAMICO_H__ #define __VECTORDINAMICO_H__ #include <vector> #include <list> using namespace std; template <typename T> class vectorDinamico{ private: list<vector<T> > datos; int tamBloque; public: vectorDinamico(); ~vectorDinamico(); vectorDinamico(int tam); }; #endif
vectordinamico.cpp #include "vectordinamico.h" template <typename T> vectorDinamico<T>::vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::~vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::vectorDinamico(int tam){ tamBloque = tam; vector<T> aux(tamBloque); datos.push_back(aux); }
Pero al compilar tengo este error: [Linker error] undefined reference to `vectorDinamico<int>::vectorDinamico(int)' [Linker error] undefined reference to `vectorDinamico<int>::~vectorDinamico()' Seguro que es una tontería, ¿alguien sabe qué pasa? Saludos!
|
|
|
En línea
|
"He who allows himself to be insulted, deserves to be." Repórtame cualquier falta a las normas del foro por mensaje privado.
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola En la facultad me han enseñado que con templates se escribe la implementación de los métodos en el .h y no hace falta el .cpp, pero no sé el motivo de esto. Pruébalo a ver si funciona "vectordinamico.h" #ifndef __VECTORDINAMICO_H__ #define __VECTORDINAMICO_H__ #include <vector> #include <list> using namespace std; template <typename T> class vectorDinamico{ private: list<vector<T> > datos; int tamBloque; public: vectorDinamico(); ~vectorDinamico(); vectorDinamico(int tam); }; template <typename T> vectorDinamico<T>::vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::~vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::vectorDinamico(int tam){ tamBloque = tam; vector<T> aux(tamBloque); datos.push_back(aux); } #endif
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Kasswed
|
Hola gracias,
bueno lo he probado pero eso no soluciona el problema.
Yo apostaría a que todo está bien, quizá deba ser problema del compilador de Dev C++
¿Me recomendais algún otro software para Windows?
|
|
|
En línea
|
"He who allows himself to be insulted, deserves to be." Repórtame cualquier falta a las normas del foro por mensaje privado.
|
|
|
STANHMAL
Desconectado
Mensajes: 107
ςταηhmαl - hηαfε
|
¿Me recomendais algún otro software para Windows?
Usa el Visual C++, es muy bueno, o si prefieres algo libre, puedes usar el NetBeans en conjunto con el gcc, hacen una combinación potente. $4!u2
|
|
|
En línea
|
Power Metal vs ReggaetonQue es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red
|
|
|
n0z
Desconectado
Mensajes: 14
|
Quizá sea porque no has configurado el directorio de includes(ficheros cabecera). Tienes que ir a opciones de proyecto, y mira en la pestaña directorio de includes y pon el directorio donde tengas el .h
|
|
|
En línea
|
|
|
|
exel
Desconectado
Mensajes: 50
|
"vectordinamico.h" #ifndef __VECTORDINAMICO_H__ #define __VECTORDINAMICO_H__ #include <vector> #include <list> using namespace std; template <typename T> class vectorDinamico{ private: list<vector<T> > datos; int tamBloque; public: vectorDinamico(); ~vectorDinamico(); vectorDinamico(int tam); }; template <typename T> vectorDinamico<T>::vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::~vectorDinamico(){ tamBloque = 0; } template <typename T> vectorDinamico<T>::vectorDinamico(int tam){ tamBloque = tam; vector<T> aux(tamBloque); datos.push_back(aux); } #endif
Esta solucion es correcta, ademas falta el pequeño detalle de no agregar el return 0 para main(). Kasswed el error es que los metodos que se encuentran en vectordinamico.cpp no existen para el compilador ya que no encuentra referencia hacia el mismo. Por eso, cuando intentas compilar main.cpp, en la especificacion de este hay una referencia a vectordinamico.h, pero ni en vectordinamico.h ni en main.cpp existe referencia a vectordinamico.h. Perdon por la redundancia. Saludos
|
|
|
En línea
|
|
|
|
Kasswed
|
Quizá sea porque no has configurado el directorio de includes(ficheros cabecera). Tienes que ir a opciones de proyecto, y mira en la pestaña directorio de includes y pon el directorio donde tengas el .h
Hola N0Z, lo he intentado configurar pero el error persiste. exel como he dicho, lo he probado así y tampoco me soluciona el error. Yo creo que debe ser un error de Dev C++. Diría que g++ en Linux compila, la cosa es que ahora no puedo probar. Dev C++ es raro, si me da estos errores así cada dos por tres, paso de trabajar con él. Descargando Visual C++ a ver qué tal. Netbeans no me gusta mucho.
|
|
|
En línea
|
"He who allows himself to be insulted, deserves to be." Repórtame cualquier falta a las normas del foro por mensaje privado.
|
|
|
exel
Desconectado
Mensajes: 50
|
Precisamente, he descargado la ultima version del dev-c++ para probarlo y funciono.
|
|
|
En línea
|
|
|
|
Kasswed
|
Es cursioso jaja
le pongo un return 0; al main, y me compila.
Le pongo un comentario después del return 0; al main, y ya no me compila
Jaja este Dev C++ parace muy fiable.
|
|
|
En línea
|
"He who allows himself to be insulted, deserves to be." Repórtame cualquier falta a las normas del foro por mensaje privado.
|
|
|
n0z
Desconectado
Mensajes: 14
|
Es cursioso jaja
le pongo un return 0; al main, y me compila.
Le pongo un comentario después del return 0; al main, y ya no me compila
Jaja este Dev C++ parace muy fiable.
Cuando le pones el comentario al main, le pones un comentario de una sola linea, ¿no? no vaya a ser que se te haya pasado y estes comentando el } que cierra. Por curiosidad, ¿es que algún compilador deja que a una función que devuelve un entero, no le digas que tiene que retornalo?
|
|
« Última modificación: 8 Mayo 2012, 00:38 am por N0Z »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Error De Compilacion :'(
« 1 2 »
Programación Visual Basic
|
Petro_Boca
|
13
|
6,422
|
2 Agosto 2010, 21:45 pm
por BlackZeroX
|
|
|
Error de compilacion
Programación Visual Basic
|
Mr.Blue
|
4
|
5,147
|
22 Agosto 2010, 01:17 am
por Mr.Blue
|
|
|
error de compilacion
Programación C/C++
|
mapers
|
2
|
2,948
|
8 Septiembre 2010, 13:27 pm
por JuszR
|
|
|
John the ripper Error de compilacion -- make: *** [generic.h] Error 1 --
GNU/Linux
|
hbenzin
|
2
|
4,137
|
20 Agosto 2011, 23:42 pm
por hbenzin
|
|
|
Error raro en la compilación de este sencillo código.
« 1 2 3 4 5 »
Programación C/C++
|
OmarHack
|
41
|
26,818
|
10 Junio 2013, 07:52 am
por leosansan
|
|