Re-Bonjour .
J'ai deja surchargé des opérateur avant ... et la je ne comprend pas ce qu'il me manque :
je cherche a tester si un objet t est présent ou non dans un vector avant de l'ajouter . pour cela je fait :
J'ai ensuite surchargé les opérateur == et != de cette facons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if ( std::find(Trans.begin(), Trans.end(),t ) != Trans.end() ) blabla
Mais rien n'y fait , meme aprés voir ajouté 2 fois le meme objet t, je ne passe jamasi dans ce qu'il y a aprés le if ... :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 bool operator == (const cTransition & )const; bool operator != (const cTransition &)const ; bool cTransition::operator == (const cTransition & t) const { return ( (ini == t.ini) && (fin == t.fin) && (lettre == t.lettre ) ) ; } bool cTransition::operator != (const cTransition & t) const { return ( (ini == t.ini) || (fin == t.fin) || (lettre == t.lettre ) ) ; }
J'ai testé une comparaison simple du style ( t == Trans[i] ), pas de probléme ca marche ca par contre .
J'ai meme rajouté tout les opérateur ( > >= < <= ) il semble que std::find ne fasse appel a aucun de mes opérateur redéfinis
edit : j'ai oublié de dire comment je déclarait tout ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 cTransition * t = new cTransition() ; std::vector< cTransition *> Trans ;
Partager