emiaille
Messages postés11Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention11 mars 2007
-
10 mars 2007 à 21:37
emiaille
Messages postés11Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention11 mars 2007
-
11 mars 2007 à 16:06
Bonjour tout le monde,
En ce moment je m'initie aux templates et j'ai donc créer une classe template matrix delaquelle je tire la classe vector par héritage.
Pour simplifier la classe matrix, disons quelle contient une donnée menbre protégée appelée m_rows :
template <typename T>
class matrix
{
...
protected:
unsigned int m_rows;
}
J'ai ensuite crée la classe vector avec la syntaxe suivante :
template <typename T>
class vector : public matrix<T>
{
...
}
Je compile tout ça avec g++ sous windows et j'obtiens les messages suivants dans l'implémentation des fonctions de ma classe vector :
vector.hpp:68: error: 'm_rows' undeclared (first use this function)
J'ai fait quelques recherches sur Google pour trouver des tutoriels sur les templates, aucun ne traite l'héritage des classes templates, je ne suis pas sûr de la synthaxe pour la déclaration de ma classe vector.
Est-ce que quelqu'un a une idée de l'erreur que je pourrais commettre?
Merci et n'hésitez pas à me demander plus de détails si nécessaire.
cs_azamharir
Messages postés55Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 1 novembre 2008 10 mars 2007 à 23:02
salut
la partie du programme que t'as donnée se compile très bien (avec VC6).
donne le reste de l'implementation de vector peut etre que l'erreur vient de là.
@++
Vous n’avez pas trouvé la réponse que vous recherchez ?
emiaille
Messages postés11Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention11 mars 2007 11 mars 2007 à 00:59
Merci à tous les deux.
Je viens d'essayer de compiler le bout de code qu'a fournit [auteurdetail.aspx?ID=19734 vecchio56] et j'ai le même problème que j'avais pu observer avant (d'ailleurs merci l'exemple simple est parfait), l'erreur suivante apparaît :
test.cpp:14: error: 'm_rows' undeclared (first use this function)
Pour info j'utilise g++ de la version 5.1.3 de MinGW sous windows.
Pour répondre à
[auteurdetail.aspx?ID=959350 azamharir], j'ai essayé de compiler exactement le même code avec VC++ 2003 et là miracle ça compile parfaitement.
Donc j'en déduis que ça ne vient pas du reste de l'implémentation mais de différences entre les 2 compilateurs.
Là moi ça me dépasse mais si quelqu'un a une idée, je suis preneur.
mad_charif
Messages postés49Date d'inscriptiondimanche 16 octobre 2005StatutMembreDernière intervention19 août 2010 11 mars 2007 à 01:16
slt mec
je croix que c pa le code c le compilateur
essai --cygwin-- tu y trouve aussi un gcc
je travail avec CDT d'eclipse et c ce dernier que j'utilise
bonne chance a toi ;)
emiaille
Messages postés11Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention11 mars 2007 11 mars 2007 à 14:30
Oui c'est bien ce qu'il me semble, ça vient du compilateur.
A mon avis, le fait d'utiliser cygwin ne m'aidera pas beaucoup puisqu'à
priori ce doit être le même compilateur à 1 ou 2 versions près.
Ce qui m'étonne c'est que le compilateur de GNU/GCC ne comprenne pas, et qu'il est certainement plus restrictif au niveau de la norme que celui de Microsoft.
Ce qui me fait dire que je dois me tromper sur la synthaxe à utiliser pour la déclaration de ma classe vector.
Mais là j'ai du mal à trouver sans cours ni exemple, alors je vais mettre le nez dans la STL livrée avec Mingw pour essayer de trouver la bonne synthaxe. Je posterais la solution si je trouve.
emiaille
Messages postés11Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention11 mars 2007 11 mars 2007 à 15:20
C'est vrai, il n'y a pas de h à syntaxe, comme quoi, même sur un forum d'informatique on peut prendre une leçon de français, merci.
Je viens de télécharger la version dont tu as mis le lien, j'ai effectivement réussi à compiler avec, mais c'est une version un peu vieille. C'est la version 3.0.0 de MinGW (gcc 3.2.3) alors que la version la plus récente est la 5.1.3 (gcc 3.4.2).
Peut-être que la norme a évolué entre-temps. Est-ce que tu pourrais essayer avec la version 5.1.3? Voilà le lien.