Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème d'héritage de classes templates [ Divers / Général ] (emiaille)

samedi 10 mars 2007 à 21:37:07 | Problème d'héritage de classes templates

emiaille

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.


samedi 10 mars 2007 à 22:51:22 | Re : Problème d'héritage de classes templates

vecchio56

Administrateur CodeS-SourceS
Le programme suivant ne compile pas chez toi?

template <typename T>
class matrix
{
protected:
  unsigned int m_rows;
};


template <typename T>
class vector : public matrix<T>
{
  void f()
  {
    m_rows = 2;
  }
};

int main()
{
}

_____________________________________
Un éditeur de ressources gratuit pour Windows


samedi 10 mars 2007 à 23:02:09 | Re : Problème d'héritage de classes templates

azamharir

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à.
@++


dimanche 11 mars 2007 à 00:59:58 | Re : Problème d'héritage de classes templates

emiaille

Merci à tous les deux.

Je viens d'essayer de compiler le bout de code qu'a fournit 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 à
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.

dimanche 11 mars 2007 à 01:16:49 | Re : Problème d'héritage de classes templates

mad_charif

Membre Club
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 ;)

dimanche 11 mars 2007 à 14:30:53 | Re : Problème d'héritage de classes templates

emiaille

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.

dimanche 11 mars 2007 à 14:39:44 | Re : Problème d'héritage de classes templates

vecchio56

Administrateur CodeS-SourceS
J'arrive à compiler l'exemple sans problème avec MinGW (je viens d'installer cette version)

Pour info, il n'y a pas de h à syntaxe.

_____________________________________
Un éditeur de ressources gratuit pour Windows


dimanche 11 mars 2007 à 15:20:11 | Re : Problème d'héritage de classes templates

emiaille

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.

Encore merci.

dimanche 11 mars 2007 à 15:37:10 | Re : Problème d'héritage de classes templates

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
En effet avec cette version faut ajouter un petit truc, mais tu va t'amuser si tu dois le faire partout:

template <typename T>
class matrix
{
protected:
  unsigned int m_rows;
};


template <typename T>
class vector : public matrix<T>
{
  void f()
  {
    matrix<T>::m_rows = 2;
  }
};

int main()
{
}

_____________________________________
Un éditeur de ressources gratuit pour Windows


dimanche 11 mars 2007 à 15:54:53 | Re : Problème d'héritage de classes templates

emiaille

Merci ça marche nickel avec MinGW et VC++ 2003 en plus.

Par contre t'as raison ça va être la misère à rajouter à chaque fois, je vais avoir une petite série de copier/coller à faire.


1 2

Cette discussion est classé dans : classe, vector, matrix, héritage, templates


Répondre à ce message

Sujets en rapport avec ce message

héritage d'une template classe comme vector [ par Urukai1 ] bonjourje suis un newbie en cpp, et j'ai fait beaucoup de javaje souhaite faire une classe qui herite par exemple de la classe vector avec template,le Testez le typename avec une classe utilisant les templates [ par amorosalain ] [size=6][b][i]SAM[/i][/b][/size=6]Bonjour à tous.J'ai besoin d'un peu d'aide.J'ai une classe ou j'utilise un template.templatemaclasse::mamethode(...) Accès aux données d'une autre classe [ par ArkSer78 ] Bonjour,J'essaye de développer une application avec une interface graphique en C++ et en utilisant les librairies de dévellopement STL et QT.J'ai créé Constructeur par recopie et Héritage [ par heleos ] Bonjour, J'ai un légé soucis avec un programme c++ Je n'arrive pas à faire un constructeur par recopie d'une sous classe. J'ai testé comme ceci mais Vector et classe abstraite [ par darunia ] Bonjour, Dans le cadre d'un projet de simulation de course cycliste, j'ai une classe Etape qui est abstraite et 3 classes qui heritent de celle ci. Héritage et destructeur [ par vincemail ] Bonsoir à tous, j'aurai besoin de quelques précisions quant aux destructeurs d'une classe héritant d'une autre. J'ai une classe B qui hérite d'une cla Problème de cast avec template [ par xkamen ] Bonjour,Je voudrais travailler avec des templates. J'ai créé une classe template Matrix; et je voudrais savoir comment réaliser un cast dans mon progr TPanel et héritage [ par websinh ] Bonjour tout le monde,Alors voilà mon problème : J'ai deux classes. l'une scrMain et l'autre scrEditor. scrEditor Hérite de scrMain. sur cette classe template et l'héritage [ par imad_lol ] salut.dans mon programme je déclare 2 classe X et Y.les 2 classe sont des classes templates et Y hérite de X :template class X{ };//****************** STL vector et classes abstraites, possibles ?? [ par RV2931 ] Bonjour,j'aurai voulu savoir si c'était possible de créer un STL::vector d'une classe abstraite ???  vector, ça j'y crois pas trop, mais vector  avec


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.