Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema básico de includes

Estas en el tema de Problema básico de includes en el foro de C/C++ en Foros del Web. Buenas noches. Tengo algo oxidado el c++. estaba probando y alcinando de que un pequeño programa no funcionaba. Os pongo aquí la estructura. Es tan ...
  #1 (permalink)  
Antiguo 12/02/2009, 18:30
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Exclamación Problema básico de includes

Buenas noches.

Tengo algo oxidado el c++. estaba probando y alcinando de que un pequeño programa no funcionaba.

Os pongo aquí la estructura. Es tan ridículamente sencilla que estoy empezando a pensar que hay detalles que estoy olvidando. ¿Tenéis idea? Tan fácil que no veo qué demonios pasa:

main.cpp
Código:
#include <stdlib.h>
#include "prueba.h";

int main(int argc, char** argv)
{
    prueba *hola = new prueba();
    hola->escribe();
    return 0;
}
prueba.h
Código:
#ifndef PRUEBA_H_INCLUDED
#define PRUEBA_H_INCLUDED

class prueba{

    public:
        prueba();
        void escribe();
};

#endif // PRUEBA_H_INCLUDED
prueba.cpp
Código:
#include "prueba.h";
#include <iostream>

prueba::prueba(){}

void prueba::escribe()
{
    cout<<"HolaMundo"<<endl;
}


Sinceramente, es tan sencillo que no puedo comprender qué pasa. Alguna comilla? la forma de incluir?. Están todos en la misma carpeta.

Me devuelve un "UNDEFINED REFERENCE" a la funcion constructora y escribe llamadas en el main.

Y además si pongo la constructora en el prueba.h, sí que funciona. así que es algún problema de include, como dicta el título.


¿¿¿Qué demonios es???
__________________
Darkgaze
  #2 (permalink)  
Antiguo 13/02/2009, 02:58
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema básico de includes

¿Que compilador estas usando? ¿Es un error del compilador o del linker? Pega el output exacto.

Lo que veo son 2 cosas:

A. No tenes que poner el punto y coma en #include "prueba.h";
B. En prueba.cpp tanto cout como endl no existen a menos que pongas using namespace std o accedas a ellos con el prefijo de su namespace.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 13/02/2009, 04:24
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: Problema básico de includes

ah! bueno... lo puse rápido. Mi problema no es el cout, sin duda, el problema es que no entiende qué hay en el cpp.

Lo del h lo lee, si pones la constructora en el h

class prueba{
public:
prueba() { } ;
void escribe();
};


Aunque esté vacía, la lee!!. pero luego escribe() no lo encuentra.

Lo que si me ha extrañado es el ; del include...

increible, no lo sabía. voy a probar.
__________________
Darkgaze
  #4 (permalink)  
Antiguo 13/02/2009, 04:26
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: Problema básico de includes

Bueno,

aquí está el output

||=== prueba, Debug ===|
obj\Debug\main.o||In function `main':|
E:\Mis Proyectos\Proyecto_Nightmare\prueba\main.cpp|7|und efined reference to `prueba::prueba()'|
E:\Mis Proyectos\Proyecto_Nightmare\prueba\main.cpp|8|und efined reference to `prueba::escribe()'|
||=== Build finished: 2 errors, 0 warnings ===|


A esto me refiero. No encuentra las funciones.

He probado a quitar los puntos y comas de los includes. Sigue dando el mismo error, pero no sabía que se tenían que quitar!. gracias
__________________
Darkgaze
  #5 (permalink)  
Antiguo 13/02/2009, 04:52
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema básico de includes

El problema es efectivamente del enlazador (linker), por eso el main.o (archivo objeto generado por el compilador), no debes estar compilando prueba.cpp o enlazando prueba.o, fijate en las propiedades del proyecto o compilalo desde linea de comandos.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 13/02/2009, 05:55
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: Problema básico de includes

Pues entonces no se qué hacer. NO se compilar por linea de omandos, puede parecer raro, pero no me han enseñado jamás.
__________________
Darkgaze
  #7 (permalink)  
Antiguo 13/02/2009, 06:04
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema básico de includes

¿Que IDE estas usando? Fijate en las propiedades del proyecto si esta incluido prueba.cpp o subi el archivo del proyecto ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 14/02/2009, 07:38
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: Problema básico de includes

HOla!

Pues arreglé ya el problema. Uso Code::Blocks. CUando hacía un nuevo archivo no incluía en la compilación el archivo. eso era todo. Ahora funciona.


Muchísimas gracias y perdonad la molestia.
__________________
Darkgaze
  #9 (permalink)  
Antiguo 14/02/2009, 12:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema básico de includes

Si, faltaba ese archivo al compilar, de nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.