elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema compilando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problema compilando  (Leído 5,161 veces)
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Problema compilando
« Respuesta #10 en: 1 Mayo 2010, 06:56 am »

De que queres que se encargue el linker? que vos pensabas que por incluir persona.h, el IDE te iva a compilar y a linkear el cpp solo porque tienen el mismo nombre?  :D

Olvidate de .h y de .cpp. Esas son solo convenciones, la realidad es que ambos son solo códigos que necesitan ser compilados y linkeados. La única diferencia es que uno los vas a usar para las declaraciones y el otro para las definiciones, pero luego de eso las diferencias son nulas.

Si vos haces esto por ejemplo:

main
Código
  1. #include <iostream>
  2. #include "persona.h"
  3.  
  4. int main()
  5. {  
  6.  
  7. return EXIT_SUCCESS;
  8. }
  9.  

persona.h
Código
  1. #ifndef PERSONA_H
  2. #define PERSONA_H
  3. using namespace std;
  4. class Persona{
  5.    public:
  6.        Persona();
  7.        Persona(string name,string ape, int t, int ced);
  8.        virtual ~Persona();
  9.  
  10.        void g_nombre(string name);
  11.        void g_apellido(string ape);
  12.        void g_tlf(int t);
  13.        void g_ci(int ced);
  14.  
  15.        string dev_nombre()const;
  16.        string dev_apellido()const;
  17.        int dev_tlf()const;
  18.        int dev_ci()const;
  19.  
  20.    protected:
  21.        string nombre;
  22.        string apellido;
  23.        int tlf;
  24.        int ci;
  25. };
  26. #endif
  27.  


Eso no te debería dar ningún warning. Por que? porque los prototipos son suficientes para el compilado y el linkeado ya que en ningún momento necesitas ninguna definición. Ahora que pasa si intentamos instanciar una clase persona en main? obviamente nos da un error en el linker porque las definiciones no se encuentran. Y es ahí donde entra el persona.cpp (que se podría llamar nuevohh.cpp, que tenga el mismo nombre es solo para que te ordenes vos mismo)
Lo importante es que sepas que el IDE no va a buscar el archivo por vos.

Luego de saber eso, mira las preguntas que te he hecho antes y analizalo.

Y como consejo (no viene mucho al caso pero no esta de mas): La idea de dividir las definiciones y las declaraciones en distintos archivos es simplemente para tener el código mas ordenado. Alguien que quiera ver como funciona una clase no necesita ver como esta implementa sus métodos, y viceversa sucede exactamente lo mismo. Por lo tanto en clases complejas si se dividen los archivos, ahora si todos tus métodos tienen una sola linea, no tiene sentido definirlos en otros archivos, al menos que esa clase tienda a volverse mas compleja con el tiempo.

Saludos!


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Problema compilando
« Respuesta #11 en: 1 Mayo 2010, 07:22 am »

Mmm tonces no se como es eso de mostrarle a main la definicion de Persona... Ya le he puesto en vez de .h .cpp en el main, como en cpp se incluye .h jeje  :xD, ya no hayo que inventar... como en todos laos el codigo es mas o menos igual en lo del ifndef y la inclusion del .h en el .cpp nu he visto la diferencia  :-\... y en la parte izquierda me aparecen los 3 archivos unidos, en la parte que dice Project se desglosan los 3... main.cpp Persona.h y .cpp... Voy a buscar un rato mas sobre eso y si no pes mañana sigo.. Gracias, que se me habian olvidado  :xD...

Saludos...


En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Problema compilando
« Respuesta #12 en: 1 Mayo 2010, 07:29 am »

Include al .h y agrega el cpp al proyecto. (Add to project, a la izquierda) y luego fíjate lo que te dije antes.

Aclaro por si no quedo muy claro, el tema del .h y .cpp son convenciones pero se deben tener en cuenta igual, ya que para algo están. No es recomendable ponerle cualquier extensión a los archivos.

Me retiro por hoy, mañana seguimos.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Problema compilando
« Respuesta #13 en: 1 Mayo 2010, 07:39 am »

Weno eso ya ta lesto... Eso es a lo que me referia con que me aparecen los 3 unidos, no tube que add nothing to the project... porq pes ya esta agregado... Creo que el problema es lo del string, porq el en ningun momento llega a la linea donde estan las instancias de la clase.. Y pes si yo tambien me toy muriendo de sueño..

Saludos...
En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Problema compilando
« Respuesta #14 en: 1 Mayo 2010, 07:55 am »

Si vos decís  que están los 3 unidos :rolleyes:

Mañana me mostras.  :D

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Compilando?
Programación C/C++
Steven6 0 2,528 Último mensaje 25 Abril 2011, 04:35 am
por Steven6
Problema compilando cuando uso la librería portaudio.h
Programación C/C++
alfredus 2 2,189 Último mensaje 10 Abril 2015, 23:04 pm
por ivancea96
Duda compilando yuzu en linux
Juegos y Consolas
Bennu de Laconia 0 6,103 Último mensaje 21 Mayo 2020, 05:53 am
por Bennu de Laconia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines