Hola, he visto muchos tutoriales de C++ donde hacian aplicaciones , creaban archivos .h y .cpp
En el main.cpp incluían el .h, pero el .cpp en ninguna parte y funcionaba el programa, yo lo hago igual y me da un error.
¿cómo sabe el compilador dónde está el .cpp si no lo ha incluido en ninguna parte?
Saludos
El compilador no lo sabe. Tu tienes por ejemplo los siguientes archivos:
- Main.cpp
- HolaMundo.cpp
- HolaMundo.h
Tu Main.cpp incluye a HolaMundo.h y llama al constructor. En HolaMundo.h solo esta el prototipo. Al compilar, por ejemplo con gcc, compilas Main.cpp con la opcion -c que lo que hace es simplemente no enlazar. Luego compilas HolaMundo.cpp con la misma opcion. Finalmente enlazas los archivos objeto resultantes en la compilacion con el comando ld y (probablemente) la opcion -zmuldefs.
Entonces lo que haces es esto (en la consola):
g++ -c Main.cpp -o Main.o
g++ -c HolaMundo.cpp -o HolaMundo.o
ld -zmuldefs -o HolaMundo Main.o HolaMundo.o
Y luego ejecutas tu programa HolaMundo.
Como te habras dado cuenta, tu le dices explicitamente al compilador y enlazador que es lo que debe hacer.
Lo que produce confusion, es que los IDEs hacen todo esto por si solos y uno ni se entera! Por eso prefiero usar automake creando yo mismo los makefiles o pedirle a alguien que construya las ordenes con SCons. Espero se haya entendido.
Saludos.
Esque tengo un problema, me he descargado un juego en C++ que contiene varias archivos .h y .cpp, en el código veo que en los .cpp se incluyen los .h, pero en ningún lado se incluyen los .cpp.
Entonces qué hago, porque el compilador me da error por eso
Busca el proyecto o makefile, lee la documentacion PRIMERO.