Bonjour, je suis nouveau sur ce forum, alors je ne sais pas si je suis au bon endroit pour demander des conseils de programmation.

J'ai commencé à apprendre le C++ depuis une semaine, et j'ai commencé un petit projet personnel pour le plaisir qui consiste à un jeu de hockey.
Le jeu contient plusieurs classes(Player,Skaters,Forwards,Defensemen,Goaltenders,Team et Game). La partie sur la création des joueurs ne causent aucun problème, cependant, j'ai pensé à une classe "Game" qui servirait à instancier une partie, et que son constructeur prendrait 2 équipes pour qu'elles s'affrontent, et créarait la surface de jeu qui serait un tableau statique 2D qui pourrait prendre autant des joueurs(1 joueur par case),la puck et d'autres objets qui viendront plus tard. Mon problème, est que j'éssais de définir un template de type "T" dans ma classe "Game" pour que mon attribut "ice[5][14]"(ma surface de jeu) puissent prendre des objets de type T. Cependant, peu importe comment j'arrange mon code, j'ai toujours des erreurs du genre "T was not declared in this scope"(dans mon main), ou template argument is invalid. Voici les 3 parties de code venant de 3 fichiers utilisés pour les templates.

main.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Game <T> game1(&MTL,&TOR); //C'est ici l'erreur de T n'est pas declaré,


Game.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class T>
class Game
{
    public:
 
        Game(Team* T1,Team* T2);
        virtual ~Game();
 
    protected:
 
    private:
        T* ice[6][15]; //Je veux que ma surface de jeu puissent prendre des objets de plusieurs type
 
};

Game.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
using namespace std;
 
template <class T>  //
Game<T>::Game(Team* T1,Team* T2)
{
    ice[1][3] = T1->getGoaltender(); //Retourne une référence de type Goaltenders qui doit être placé sur ma surface de jeu.
    ice[14][3] = T2->getGoaltender();
 
    //ctor
}
template <class T>
Game<T>::~Game()
{
    //dtor
}




Voilà, j'espère avoir placé mon problème au bon endroit, et merci d'avance!