Bonjour, j'ai un code qui ne compile pas avec g++ mais qui compile et s'exécute parfaitement bien avec Visual 2005. Voici ma fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
void Cah::typologie(set<int> & s, double diff)
{
  double ind;
  int num;
  vpClasse::const_reverse_iterator it = _desc.rbegin();
  s.insert((*it)->getAine());
  s.insert((*it)->getBenj());
  set<int>::iterator sit;
 
  it++;
 
  for( ; it != _desc.rend() ; it++)
  {
	ind = (*it)->getIndice();
	num = (*it)->getNum();
	if(ind > diff)
	{
	  /* si num est un element de s on le supprime */
	  sit = s.find(num);
	  if(sit != s.end()) s.erase(sit); /* sit == s.end() : l'element n'a pas ete trouve */
 
      s.insert((*it)->getAine());
	  s.insert((*it)->getBenj());
	}
	else
	  break;
  } /* for( ; it != _desc.end() ; it++) */
}
L'erreur a lieu à la ligne suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
for( ; it != _desc.rend() ; it++)
et g++ dit :

Sources/cah.cpp: In member function `void Cah::typologie(std::set<int,
std::less<int>, std::allocator<int> >&, double)':
Sources/cah.cpp:438: error: no match for `
std::reverse_iterator<__gnu_cxx::__normal_iterator<Classe* const*,
std::vector<Classe*, std::allocator<Classe*> > > >& !=
std::reverse_iterator<__gnu_cxx::__normal_iterator<Classe**,
std::vector<Classe*, std::allocator<Classe*> > > >' operator
Savez-vous comment résoudre ce problème ?

Merci d'avance