Template di array [errore]

di il
3 risposte

Template di array [errore]

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?

3 Risposte

  • Re: Template di array [errore]

    C'è anche un main?
  • Re: Template di array [errore]

    Si, eccolo :
    #include <iostream>
    #include "vector.h"
    using namespace std;
    
    int main() {
    	Array <int> v(10);
    	v.inserimento();
    	v.stampa();
    	v.ordina();
    	cout<<endl;
    	v.stampa();
    
    
    	return 0;
    }
    
    
  • Re: Template di array [errore]

    Nel momento in cui una classe è resa un template tutte le definizioni delle funzioni vanno nel file header e specificate inline. In caso contrario si hanno errori di linking.
Devi accedere o registrarti per scrivere nel forum
3 risposte