[Template]Probléme de compilation
Bonjour :D,
J'ai plusieurs questions a vous posez.Tout d'abord je voudrai savoir la différence entre template<typename T> et template<classT> (dans quel cas est-il préférable d'utilisé l'un que l'autre ?)
J'ai un sousci de compilation:
Code:
1 2
| main.cpp:(.text+0x40): undefined reference to `Vecteur<int>::operator[](int)'
main.cpp:(.text+0x77): undefined reference to `Vecteur<int>::operator[](int)' |
Alors que tout est ok au niveau du code:
Vecteur.hxx
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#include <iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
template<class T=int>
class Vecteur{
private:
int taille;
T *tab;
public:
Vecteur(int t){
if(t<=0)
exit(0);
else{
taille=t;
tab= new T[taille];
}
}
T& operator[](int );
Vecteur & operator=(const Vecteur &v);
}; |
Vecteur.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#include "Vecteur.hxx"
template<class T> T& Vecteur<T>::operator[](int i){
if(i<0||i>=taille)
exit(0);
return tab[i];
}
template<class T> Vecteur<T> & Vecteur<T>::operator=(const Vecteur & vcopie){
int i=0;
if(this!=&vcopie){
if(vcopie.taille==0)
exit(0);
taille=vcopie.taille;
tab=new T[taille];
for(i=0;i<taille;i++)
tab[i]=vcopie[i];
}
return *this;
} |
Main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include "Vecteur.hxx"
using namespace std;
int main(){
int i=0;
Vecteur<int> V(10);
for(i=0;i<10;i++){
V[i]=2*i;
}
for(i=0;i<10;i++)
cout<< "Compteur: "<<V[i]<<endl;
return 0;
} |
Merci d'avance