Sto svolgendo un esercizio in cui mi si chiedeva di relizzare un template di vettore, mi è capitato un errore che ho già incontrato altre volte:
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [classe vettore] Error 1
il mio codice è il seguente:
template <class t>
class Array{
public:
Array(int x=0):riemp(x){datoPtr=new t[x];}
void inserimento();
void stampa();
void ordina();
private:
int riemp;
t* datoPtr;
};
#include "vector.h"
#include <iostream>
using namespace std;
template <class t>
void Array<t>::inserimento(){
t value;
for (int i=0;i<riemp;i++){
cout<<"Inserisci un valore:";
cin>>value;
datoPtr[i]=value;
}
}
template <class t>
void Array<t>::stampa(){
for (int i=0;i<riemp;i++){
cout<<datoPtr[i]<<" ";
}
}
template <class t>
void Array<t>::ordina(){
bool scambio=true;
int temp;
while(scambio){
scambio=false;
for (int i=0;i<riemp-1;i++)
if(datoPtr[i]>datoPtr[i+1]){
cout<<datoPtr[i]<<" e' maggiore di "<<datoPtr[i+1];
temp=datoPtr[i];
datoPtr[i]=datoPtr[i+1];
datoPtr[i+1]=temp;
scambio=true;
}
}
}
il programma funzionava prima che lo modificassi per farlo funzionare come un template, secondo voi qual'è il motivo?