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
Game <T> game1(&MTL,&TOR); //C'est ici l'erreur de T n'est pas declaré,
Game.h
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
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!
Partager