Probleme const_iterator

Probleme const_iterator - C++ - Programmation

Marsh Posté le 26-10-2006 à 20:39:30    

Salut,
 
J'ai voulu porter un de mes codes pour le compiler avec gcc. J'ai un probleme ... Une erreur que je ne comprends pas. Voila la fonction en question ...
 

Code :
  1. template <class T> double Variance( const PILE <T> &pile )
  2. {
  3. T m = Somme(pile)/(T)(pile.size());
  4. double variance = 0.;
  5. PILE<T>::const_iterator it;
  6. for (it=pile.begin();it!=pile.end();it++)
  7.  variance += gsl_pow_2(*it-m);
  8. variance /= T(pile.size());
  9. return variance;
  10. }


 
L'erreur renvoyee par gcc est
 

Code :
  1. erreur: expected `;' before «it»


 
PILE est une classe template derivee de std::vector.
 
J'en ai d'autres qui ont le meme genre de definitions ret qui provoquent les memes erreurs. Une idee ???
 
D'avance merci

Reply

Marsh Posté le 26-10-2006 à 20:39:30   

Reply

Marsh Posté le 26-10-2006 à 22:39:20    

OK, j'ai trouve. il fallait simplement remplacer
 

Code :
  1. PILE<T>::const_iterator it;


 
par
 

Code :
  1. typename PILE<T>::const_iterator it;


 
Si qqu'un sait pourquoi ...

Reply

Marsh Posté le 26-10-2006 à 22:51:39    

parce que le compilo ne peut pas savoir que PILE<T>::const_iterator est un type.
 
template<>
class PILE<int>
{
   enum { const_iterator };
};
 
dans ce cas PILE<T>::const_iterator n'est pas un type pour T = int


Message édité par jesus_christ le 26-10-2006 à 22:51:55
Reply

Marsh Posté le 26-10-2006 à 23:41:32    

Toi, payen, convertis-toi maintenant que jesus_christ t'a montré la lumière!


Message édité par IrmatDen le 26-10-2006 à 23:41:40

---------------
.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed