Salve ragazzi.. Ho scritto un semplice programma di ordinamento tramite bubblesort implementato con le classi. Il programma funzione e non da problemi. Succesivamente ho provato a dividere il programma in 3 file, ossia il main.cpp, il file.h con la classe e infine un terzo file .cpp con tutte i metodi della classe.
Il programma non gira. Il problema è che ho provato a passare i 3 file ad un mio amico e sul suo pc parte e gira correttamente.. Come è possibile una cosa del genere??
Ecco il codice:
main.cpp
#include <iostream>
#include "classe.h"
using namespace std;
int main()
{
BUBBLESORT x;
int n;
cout<<"Inserisci il numero di elementi dell'array: "; //definizione num elementi
cin>>n;
x.definiscielem(n);
x.allocamemoria();
x.inseriscielem();
x.visualizza();
x.bubble();
x.visualizza();
system("PAUSE");
return 0;
}
classe.h
class BUBBLESORT
{
private:
int *array;
int elem;
public:
BUBBLESORT(){int elem=0;};
~BUBBLESORT(){};
void bubble();
void scambia(int &,int &);
void allocamemoria();
void visualizza();
void inseriscielem();
void definiscielem(int);
};
classe.cpp
#include <iostream>
#include "classe.h"
using namespace std;
void BUBBLESORT:: inseriscielem()
{
for(int i=0;i<elem;i++)
{
cout<<"Inserisci "<<i+1<<"-esimo elemento: ";
cin>>array[i];
}
cout<<endl<<endl;
}
void BUBBLESORT:: definiscielem(int n)
{
elem=n;
}
void BUBBLESORT:: visualizza()
{
for(int i=0;i<elem;i++)
{
cout<<array[i]<<" ";
}
}
void BUBBLESORT:: allocamemoria()
{
array=new int[elem];
if(array==NULL)
{
cout<<"Memoria non allocata correttamente!!\n\n";
system("pause");
exit(0);
}
}
void BUBBLESORT:: bubble() //confronto a due a due tutti gli elementi e li scambio se non sono ordinati
{
int ultimo=elem;
while(ultimo>0)
{
for(int i=0;i<ultimo-1;i++) //i arriva fino a ultimo-1 perchè così posso confrontarlo con l'ultimo
{
if(array[i]>array[i+1])
{
scambia(array[i],array[i+1]);
}
}
ultimo--;
}
}
void BUBBLESORT:: scambia(int &a, int &b) //passaggio per alias
{
int t;
t=a;
a=b;
b=t;
}
Mi da degli strani errori:
[Linker error] undefined reference to `BUBBLESORT::definiscielem(int)'
[Linker error] undefined reference to `BUBBLESORT::allocamemoria()'
[Linker error] undefined reference to `BUBBLESORT::inseriscielem()'
[Linker error] undefined reference to `BUBBLESORT::visualizza()'
[Linker error] undefined reference to `BUBBLESORT::bubble()'
[Linker error] undefined reference to `BUBBLESORT::visualizza()'
Non riesco proprio a capire il perchè.. Mercoledì molto probabilmente dovrò spiegarlo a tutti in aula e non so dove sbattere la testa..