Salut tous,

J'essayais de développer sur un exemple de code que j'ai trouvé sur un livre de cours, il s'agit de templates (patrons) et classes, bref, ce que j'essaye de faire, c'est de créer un template d'une classe tableau :

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
 
template <class T, int n> class tableau
{
    T  t[n];
 
    public:
    tableau();
    T & operator [](int);
};
 
template <class T, int n> tableau<T,n> :: tableau()
{
    cout<<"constructeur"<<endl;
 
    }
template <class T, int n> T & tableau<T,n> :: operator [](int indice){return t[indice];}
Donc voilà pour le code du template, maintenant, je rajoute une classe point :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
class point
{
     int x, y ;
 
    public :
    point (int abs=1, int ord=1 ) // ici init par défaut à 1
    {
        x=abs ; y=ord ;
        cout << "constr point " << x << " " << y << "\n" ;
    }
    void affiche () { cout << "Coordonnees : " << x << " " << y << "\n" ; }
} ;
Tout est prêt, il suffit de tester !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
    int main()
{
    tableau<point, 5>tab;
     tab[1](5,8);
    tab[1].affiche();
    return 0;
}
Mon problème est qu'il y a un conflit entre la déclaration de la variable tab (faite à partir du template tableau, et qui devrait donc accépter le type point) et celle du constructeur supposé me remplir les coordonées du point tab[1]... Je ne sais pas comment procéder et j'espère que vous pourriez me donner un indice, voilà, merci d'avance !