Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2657 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  typedef montype<T> monnouveautypegenerique ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

typedef montype<T> monnouveautypegenerique ??

n°1810108
durk
Posté le 09-11-2008 à 15:04:07  profilanswer
 

Bonjours à tous,
 
Voila je rencontre un petit probleme.
J'ai une classe generique de type "montype<T>".
Je souhaite à present dans une autre classe creer une lsite d'instance montype.
 
Le compilateur accepte la syntaxe suivante:
std::list<montype<T> > listeDeMonType;
 
Mais lorsque je veux parcourir cette liste en creant un iterateur j'ai un erreure:
std::list<montype<T> >::const_iterator lit=listeDeMonType.begin();   "expected `;' before ‘lit’"
 
J'essaye à present de contourner le probleme en utilisant un typedef generique qui ressemblerait à ca:
typedef montype<T> monnouveautypegenerique
 
Biensur ca ne fonctionne pas aussi je voudrais savoir si l'un de vous aurait une solution à ce probleme?
 
Merci

mood
Publicité
Posté le 09-11-2008 à 15:04:07  profilanswer
 

n°1810113
Joel F
Real men use unique_ptr
Posté le 09-11-2008 à 15:07:17  profilanswer
 

mot-clé typename :o
 

Code :
  1. typedef typename montype<T> monnouveautypegenerique;

n°1810121
durk
Posté le 09-11-2008 à 15:21:05  profilanswer
 

Salut,
 
merci de prendre le temps de repondre :D .
 
Lorsque je met ce que tu m'a indiqué, j'ai cette erreur du compilateur:
 
 error: expected nested-name-specifier
 error: invalid declarator before ‘monnouveautypegenerique’
 
Une idée?
 
je precise que c'est à l'interieur d'une template <class T> et que j'ai mis le type def dans la classe, sinon j'avais les erreurs suivante:
 
error: using ‘typename’ outside of template
error: ‘T’ was not declared in this scope
error: template argument 1 is invalid
error: expected nested-name-specifier
 
merci.

n°1810125
durk
Posté le 09-11-2008 à 15:49:03  profilanswer
 

pas d'idée? :sweat:

n°1810126
Taz
bisounours-codeur
Posté le 09-11-2008 à 15:50:04  profilanswer
 

donne ton code

n°1810129
durk
Posté le 09-11-2008 à 15:59:52  profilanswer
 

Salut, merci à toi.
Voila la partie du code concernée par le souci.  
Si par ailleurs il y a une autre facon de gerer ca, je suis ouvert;
c'est jusqte que celle-ci me semble etre faite pour ce genre de cas.
 
 

Citation :

/*
 
#ifndef BAN_H
#define BAN_H
 
#include<iostream>
#include<list>
#include"CompteEnBanque.h"
 
 
template<class T> class Banque{
 
 protected:
  typedef typename CompteEnBanque<T> CpteBque;
  std::list<CompteEnBanque<T> > listeComptes;
 /* que j'aimerai remplacer par std::list<CpteBque>::const_iterator lit=listeComptes.begin(); */
{...}
 
   
 
 public:
  Banque();
 
{...}
  std::string listeClientEtiquette();
 
 
 
};
{...}  
 
template<class T>  
 std::string Banque<T>::listeClientEtiquette(){
  std::list<CompteEnBanque<T> >::const_iterator lit=listeComptes.begin();  
 /* que j'aimerai remplacer par std::list<CpteBque >::const_iterator lit=listeComptes.begin(); */
  std::ostringstream s;
   
  while(lit!=listeComptes.end()){
   {...}
  }
  return s;
 }  
 
#endif


 
 
edit:
 
je precise que l'erreur de nested-name est obtenue une fois que j'ai remplacé par CompteEnBanque<T> par CmpteBque à l'initialisation de la liste...


Message édité par durk le 10-11-2008 à 11:58:59
n°1810135
Joel F
Real men use unique_ptr
Posté le 09-11-2008 à 16:22:15  profilanswer
 

faut aussi le mettre ou il faut :o
 

Code :
  1. typename std::list<CompteEnBanque<T> >::const_iterator lit=listeComptes.begin();

n°1810137
durk
Posté le 09-11-2008 à 16:32:57  profilanswer
 

ca passe :whistle: .
 
ca peut paraitre evident une fois qu'on connait, mais avant :sweat: .
 
Grand merci! :jap:

n°1810288
Joel F
Real men use unique_ptr
Posté le 10-11-2008 à 09:56:03  profilanswer
 

durk a écrit :

ca passe :whistle: .
 
ca peut paraitre evident une fois qu'on connait, mais avant :sweat: .
 
Grand merci! :jap:


 
Bah c'est le niveau 1 de la bonne maitrise des patrons. Si on t'enseigne pas ça tout de suite, paye ton désastre car les types dépendants, c'ets la quintessence du template.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  typedef montype<T> monnouveautypegenerique ??

 

Sujets relatifs
T'Chat particulier, besoin d'aide !Probleme de compatibilité IE / FireFox, vraiment besoin d'aide !
T_OBJECT_OPERATORSoucis avec typedef
passer de typedef struct en structtypedef, pointeurs de int et assignment makes pointer ...
pb avec typedef[c++] classe et typedef
affichage d'un typedef enummot clé typename dans un typedef ?
Plus de sujets relatifs à : typedef montype<T> monnouveautypegenerique ??


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)