Bonjour ,

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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