Estoy haciendo el primer ejercicio del capitulo 3 del libro Pensar en C++ de Bruce Eckel, las instrucciones dicen: «Cree un fichero de cabecera (con extensión «.h»). En este fichero, declare un grupo de funciones variando las listas de argumentos y valores de retorno de entre los siguientes: void, char, int y float. Ahora cree un fichero .cpp que incluya su fichero de cabecera y haga definiciones para todas esas funciones. Cada definición simplemente debe imprimir en nombre de la función, la lista de argumentos y el tipo de retorno para que se sepa que ha sido llamada. Cree un segundo fichero .cpp que incluya el fichero de cabecera y defina una int main(), que contenga llamadas a todas sus funciones. Compile y ejecute su programa.»
Y sin embargo obtengo éste error desde g++:
~/coders/desarrollo/practicas/Cpp/pensarenc/ejercicios/capitulo3 $ g++ mainfunc.cpp -o mainfunc
/tmp/cccD5w76.o: En la función `main':
mainfunc.cpp:(.text+0x3a): referencia a `funcion1(int, char, float)' sin definir
mainfunc.cpp:(.text+0x55): referencia a `funcion2(int, char, float)' sin definir
mainfunc.cpp:(.text+0x70): referencia a `funcion3(int, char, float)' sin definir
mainfunc.cpp:(.text+0x8b): referencia a `funcion4(int, char, float)' sin definir
collect2: error: ld devolvió el estado de salida 1
~/coders/desarrollo/practicas/Cpp/pensarenc/ejercicios/capitulo3 $
acá el header:
#ifndef GRUPOFUNC_H
#define GRUPOFUNC_H
void funcion1(int a, char b, float c);
int funcion2(int a, char b, float c);
char funcion3(int a, char b, float c);
float funcion4(int a, char b, float c);
#endif
acá las definiciones de las funciones que están en el header:
#include "grupofunc.h"
#include <iostream>
void funcion1(int a, char b, float c)
{
cout << "nombre de la funcion: funcion1" << endl;
cout << "primer argumento: " << a << endl;
cout << "segundo argumento: " << b << endl;
cout << "tercer argumento: " << c << endl;
return;
}
y acá el archivo fuente principal:
#include "grupofunc.h"
int main(int argc, char *argv[])
{
int a = 10;
char b = 'x';
float c = 0.1337;
funcion1(a, b, c);
funcion2(a, b, c);
funcion3(a, b, c);
funcion4(a, b, c);
return 0;
}
¿Me podrán ayudar? Gracias
