j'ai un problème avec un Template que je suis en train de créer, en effet c'est un Template de Matrice 2D qui doit pouvoir se spécialiser pour des objet "Tile", j'ai suivis 2 cours en parallèles (OpenClassroom C++ et celui de Sololearn, une appli qui donne des mini condensé de programmation). Mais j'ai un problèmes : dans la classe de template spécialisée , le T utilisé en tant que "typename" n'est plus reconnu :/ Voici le Code concerné :
Pour ton erreur, elle semble claire : "c'est quoi ce Tqui est indiqué ici?" Tu es en train de spécialiser un template, il correspond à un cas particulier de son paramètre. Donc ici c'est un cas particulier pour Tile, on pourrait avoir n'importe quelle ligne comme std::map<char,Tile> m_data; et là le compilateur accepterait, ou aussi std::vector<Tile> m_data;.
Il y a des lignes "curieuses" dans ton code comme par exemple : m_data[x];.
Ah oui! Erreur vraiment stupide ^^', mais j'ai un nouveaux problème : le compilateur me renvoi vers "stl_construct.h" fichier que je ne connais pas, et m'indique :
"error: no matching function for call to 'Tile::Tile()'|"
Alors là par contre je sèche : comment créer un objet membre dans la partie "private" sans avoir à l'instancier avec un constrcteur? En tant que valeur null?
Si tu ne peux/veux vraiment pas déclarer un constructeur par défaut, tu peux toujours insérer des éléments avec emplace/insert à la place.
Par contre pour être tout à fait franc, je pense pas que ce soit la responsabilité d'une matrice de lire un fichier pour se peupler. En effet, la matrice devrait simplement contenir des données et des fonctions de calcul. Comment elle est remplie elle n'a pas besoin de le savoir et ce pourrait être une simple fonction libre qui te créé une matrice depuis un fichier.
Par contre, m_ifstream et m_ofstream n'ont absolument rien à faire dans ta classe Marice!!!
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Inclure une Classe dans un template
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
git is great because Linus did it, mercurial is better because he didn't.