Bonsoir,

je suis en train d'implémenter un avl arbre.

J'ai donc ma classe avl générique qui fonctionne lorsque j'instancie avec un int par exemple.

Mon but est de l'instancier avec des Segment (classe perso)
Un segment étant composé de 2 Points (autre classe perso)

hélas, je me choppe une erreur que j'ai dus mal à résoudre:

erreur: passing ‘const Segment’ as ‘this’ argument of ‘bool Segment::operator<(const Segment&)’ discards qualifiers
qui m'amène à d'autre erreur (instantiated from here etc.)


J'ai donc vérifier dans la faq en ce qui concernait les surcharges, et hormi une distinction entre la surchage d'operateur via fonction membre ou fonction libre je n'ai rien trouvé.


Voici la surcharge de l'opéarteur < dans ma classe segment et dans ma classe Point

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
bool Segment::operator<(const Segment &s) {
	// recherche du endpoint gauche
	if(m_a.getType() == 0) 
		return (m_a < s.getA());
	else 
		return (m_b < s.getB());
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
bool Point::operator<(const Point &p2) {
	if(m_x < p2.getX())
		return true; 
	if(m_x > p2.getX())
		return false;
 
	// comparaison par Y
	if(m_y < p2.getY())
		return true;
 
	return false;
}
En vous remerciant par avance