Estaba creando un programa, y cuando quise separar las funciones y ponerlas en una librería para que mi main quede más limpio, me surgió este error.
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\Pepool17\AppData\Local\Temp\ccscKdt0.o:main.cpp:(.text+0x76): undefined reference to `votos(int*, char**, char**)'
Supongo que es un problema de enlazado, pero no tengo idea de como solucionarlo, estado viendo en otros post y nada me a funcionado.
Este es el código del deber.h
#ifndef DEBER_H_INCLUDED
#define DEBER_H_INCLUDED
int *diez_porciento(int arr[]);
char *obtener_ganador(char *candidatos[],int votos[],int maximo );
void votos(int personas[], char *candidatos[], char *provincias[]);
#endif
Este es el código del deber.cpp
#include <iostream>
#include <random>
#include <algorithm>
#include <string.h>
#include "deber.h"
using namespace std;
int *diez_porciento(int arr[]){
int len_arr = 3;
for(int i=0; i< len_arr ; i++){
arr[i] *= 0.1;
}
return arr;
}
char *obtener_ganador(char *candidatos[],int votos[],int maximo ){
int x = 0 ;
for(int i=0; i<4; i++){ //La llegada se cambia dependiendo de la longitud del array votos
if (votos[i] == maximo){
x = i; break;
}else{
continue;
}
}
return candidatos[x];
}
void votos(int personas[], char *candidatos[], char *provincias[]){
int votos[3];
for (int i=0; i < 3; i++){ //recorre toda la lista de personas
int A=0 ,B=0 ,C=0 ,D=0; float porcentaje=0;
for (int j=0 ; j <= personas[i]; j++){ //bucle para cada persona de la provincia
int aleatorio = 0;
aleatorio = rand()%4; //La llegada se cambia dependiendo de la longitud del array candidatos
if (candidatos[aleatorio] == candidatos[0]){
A+=1;
}else if(candidatos[aleatorio] == candidatos[1]){
B+=1;
}else if(candidatos[aleatorio] == candidatos[2]){
C+=1;
}else{
D+=1;
}
cout<<A<<" "<<B<<" "<<C<<" "<<D<<endl;
}
votos[0] = A; votos[1] = B; votos[2] = C; votos[3] = D;
int max = *max_element(votos,votos+4);
cout <<"El maximo es "<<max<<endl;
porcentaje = ( max * 100 )/personas[i];
if(porcentaje>40){
cout<<"El ganador de la provincia "<<provincias[i]<<" es el candidato "<< obtener_ganador(candidatos, votos, max )<<endl;
}else{
cout<<"No hay ganador, se va a segunda vuelta"<<endl;
}
}
}
Y este es el código del main.cpp
#include <iostream>
#include <random>
#include <algorithm>
#include "deber.h"
using namespace std;
int main(){
char *candidatos[4] = {"A","B","C","D"};
char *provincias[3] = {"Pichincha", "Cuenca", "Cotopaxi"};
int personas[3] = {100, 100, 100};
votos(personas, candidatos, provincias);
return 0;
}
Si alguien pudiera ayudarme estaría muy agradecido.