c++ básico, error referencia a función sin definir
Publicado por Mrex (1 intervención) el 29/02/2020 23:54:45
Bueno pues en una práctica tengo este .cpp
y al compilarlo con g++ usando un makefile, me da el error:
./obj/I_Posmayor_Basico.o: En la función `main':
I_Posmayor_Basico.cpp:(.text+0x217): referencia a `PosMayor(int*, int, int)' sin definir
Los códigos de la función son
y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using namespace std;
GeneradorAleatorioEnteros generador_aleat (0, 500);
int main ()
{
const int TOPE = 100;
int vector[TOPE];
int num_casillas;
int izda;
int dcha;
int *p = vector;
bool error;
do{
cout << "¿Cuantas casillas quiere rellenar? (max 100)" << endl;
cin >> num_casillas;
if(num_casillas > 100 || num_casillas <= 0)
{
cout << "Error, introduzca un número entre 1 y 100";
error = true;
}
else
error = false;
}
while(error == true);
do{
bool error = false;
cout << "¿En que posicion quiere empezar? (izda)" << endl;
cin >> izda;
cout << "¿En que posicion quiere terminar? (dcha)" << endl;
cin >> dcha;
if(izda > 100 || izda < 0 || dcha > 100 || dcha <0)
{
cout << "Error, deben ser numeros entre 0 y 100";
error = true;
}
else
{
if(izda > dcha)
{
cout << "Error, izda debe ser menor que dcha";
error = true;
}
else
error = false;
}
}
while(error == true);
for(int i = 0; i <= num_casillas; i++)
{
vector[i] = generador_aleat.Siguiente();
}
p = PosMayor(vector, izda, dcha);
cout << "El mayor se encuentra en la posicion " << p;
return 0;
}
./obj/I_Posmayor_Basico.o: En la función `main':
I_Posmayor_Basico.cpp:(.text+0x217): referencia a `PosMayor(int*, int, int)' sin definir
Los códigos de la función son
1
2
3
4
5
6
7
8
#ifndef Posmayor_Basico
#define Posmayor_Basico
using namespace std;
int * PosMayor(int *pv, int izda, int dcha);
#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <Posmayor_Basico.h>
using namespace std;
/////////////////////////////////////////////////////////////////////////////
int * PosMayor(int *pv, int izda, int dcha)
{
int *posmayor = pv + izda;
for(int i=izda; i<=dcha; i= i++)
{
int *pos_actual = pv+i;
if(*pos_actual > *posmayor)
{
*posmayor = *pos_actual;
}
}
return posmayor;
}
Valora esta pregunta


0