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

os compila esta clase? a mi nooo!

Estas en el tema de os compila esta clase? a mi nooo! en el foro de C/C++ en Foros del Web. estoy haciendo una clase de prueba pero no consigo solucionar el error, son 2.cpp y 2.h En teoria por pantalla me tendria que aparecer: HelloWorld ...
  #1 (permalink)  
Antiguo 23/04/2009, 17:10
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
os compila esta clase? a mi nooo!

estoy haciendo una clase de prueba pero no consigo solucionar el error, son 2.cpp y 2.h
En teoria por pantalla me tendria que aparecer:
HelloWorld
CONSTRUCTOR
DEBERIA ENTRAR?


clase pruebas.cpp:
Código:
using namespace std;

#include "pruebas.h"

int main(int argc,char *argv[])
{

	cout<<"HelloWorld"<<endl;
	
	Clase1 * c1 = new Clase1; //ACA ESTA EL ERROR!
	c1.Hola();                            //ACA ESTA EL ERROR!
	
	return 0;
}
clase pruebas.h:
Código:
using namespace std;

#include "Clase1.h"

#include <fstream>
#include <iostream>
clase Clase1.cpp:
Código:
#include "Clase1.h"

Clase1::Clase1()
{
             cout<<"CONSTRUCTOR"<<endl;
}

void Clase1::Hola()
{
	cout<<"DEBERIA ENTRAR?"<<endl;
}
clase Clase1.h:
Código:
#ifndef _CLASE1_H_
#define _CLASE1_H_

#include <string.h>
#include <iostream>

using namespace std;

class Clase1
{
	public:
		Clase1();
		void Hola();
};

#endif
los errores que me saltan por pantalla son:

pruebas.cpp:14: error: request for member `Hola' in `c1', which is of non-class type `Clase1*'
pruebas.cpp:17:2: warning: no newline at end of file

He mirado mucho por internet pero no doy con el error!!!!
Ayuda please. Mil gracias

Última edición por red_robe; 24/04/2009 a las 13:34
  #2 (permalink)  
Antiguo 24/04/2009, 15:32
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: os compila esta clase? a mi nooo!

Claro, c1 es un puntero, tenes que hacerlo asi:
Código:
c1->Hola();
PD. No abuses de using para el namespace std, en al menos un par de lugares todavia no cargaste ninguna cabecera que contenga ese namespace ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 25/04/2009, 05:33
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: os compila esta clase? a mi nooo!

aunque lo ponga en forma de puntero me saltan dos errores:

pruebas.cpp:(.text+0x155): undefined reference to `Clase1::Clase1()'
pruebas.cpp:(.text+0x187): undefined reference to `Clase1::Hola()'

Clase1 * c1= new Clase1;
c1->Hola();

y aunque ponga:
Clase1 * c1= new Clase1(); --> tambien error
Clase1 *c1= new Clase1; --> error

juuaaaaaa, no debe ser tan complicado esto!!!! AYUDA y GRACIAS
  #4 (permalink)  
Antiguo 25/04/2009, 07:19
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: os compila esta clase? a mi nooo!

Yo personalmente eliminaría el archivo prueba.h e incluiría en el archivo prueba.cpp directamente Clase1.h, iostream y fstream. Son chorradillas pero a veces dan "por saco" esas cosas.

Deberías probar esto que te acabo de comentar, porque todo lo demás lo veo bien.

Salu2
  #5 (permalink)  
Antiguo 25/04/2009, 08:01
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: os compila esta clase? a mi nooo!

Esos dos nuevos son errores del enlazador, con la correccion que te dije el codigo es compilable, no estas compilando (y generando el archivo objeto) para Clase1.cpp, no es lo mismo que tenias al principio.

Usando g++ desde linea de comandos (g++ pruebas.cpp) da exactamente los errores que mencionas ahora, haciendolo correctamente (g++ pruebas.cpp clase1.cpp) genera el ejecutable sin problemas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 25/04/2009, 13:35
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: os compila esta clase? a mi nooo!

Cita:
Iniciado por Eternal Idol Ver Mensaje
Usando g++ desde linea de comandos (g++ pruebas.cpp) da exactamente los errores que mencionas ahora, haciendolo correctamente (g++ pruebas.cpp clase1.cpp) genera el ejecutable sin problemas.
Cómo puede ser que al poner g++ pruebas.cpp haya errores y poniendo g++ pruebas.cpp clase1.cpp funcione? no están bien vinculadas? no entiendo
en otras prácticas que he hecho no recordaba poner todos los .cpp al compilar


Gracias, he estado muy rallado!!!
  #7 (permalink)  
Antiguo 25/04/2009, 15:31
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: os compila esta clase? a mi nooo!

Cita:
Iniciado por red_robe Ver Mensaje
Cómo puede ser que al poner g++ pruebas.cpp haya errores y poniendo g++ pruebas.cpp clase1.cpp funcione? no están bien vinculadas? no entiendo
en otras prácticas que he hecho no recordaba poner todos los .cpp al compilar
Normalmente se usa un proyecto o un makefile, si este no compila ambos modulos se producen esos errores de enlazado al no poder encontrar el constructor o el metodo Hola por el simple hecho de que no estan implementados en pruebas.cpp sino en clase1.cpp.

Cita:
Iniciado por red_robe Ver Mensaje
Gracias, he estado muy rallado!!!
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 01:26.