Tri d'une liste avec un foncteur - C++ - Programmation
Marsh Posté le 10-02-2005 à 18:42:41
Déjà je peux te dire qu'il n'y a pas de prob à la compilation avec g++ et le programme s'exécute correctement.
Marsh Posté le 10-02-2005 à 18:54:24
M...
C'est surement encore un problème avec Visual C++ 6.0 !
Mais si quelqu'un a une solution pour résoudre ce problème sous ce compilateur, je suis preneur !
Marsh Posté le 10-02-2005 à 19:03:03
C'est sur c'est mieux de mettre les const mais peut-etre qu'il veut aussi que le foncteur hérite de greater.
Marsh Posté le 10-02-2005 à 19:04:28
Un air de deja vu pour moi ... L'utilisation avancée de la STL(foncteur notemment) avec Visual 6 je n'ai jamais pu en faire quelque chose...
Sur le 2003 tout marche parfaitement
Marsh Posté le 10-02-2005 à 19:07:22
les const pitié
bool operator()(Article* left,Article* right)
rien que là il en manque 3
Marsh Posté le 10-02-2005 à 19:15:22
Tiens, moi aussi je vais t'aider. En plus des const, ajoute des commentaires. Alors, problème résolu ? Non ? Bizarre...
Pourtant avec des aides aussi utiles que celle de Taz et moi...
Charrue avant les boeufs powered.
Marsh Posté le 10-02-2005 à 21:01:56
Essaye ca je pense que ca devrait marcher :
Code :
|
Marsh Posté le 11-02-2005 à 08:39:08
Merci de votre aide ...
Effectivement, il est possible que ces questions ait un air de déja vu car je suis souvent venu sur ce forum pour mes problèmes d'utilisation de la STL avec Visual C++ 6.0 (sans que cela ait souvent résolu le problème tant l'utilisation de cette librairie sous V6.0 est problématique !).
Pour Taz, effectivement il doit manquer quelque const. J'avais essayé d'être plus rigoureux dans la définition de operator() mais cela n'avait pas amélioré la compilation. Il est vrai que sans les utiliser, le programme marche quand même sous g++ (ce qui ne justifie en rien de ne pas en mettre !).
En tout cas, un grand merci pour ces conseils, je vais essayer de voir si cela résoud mon problème.
Marsh Posté le 11-02-2005 à 08:50:20
Euh ..
Effectivement, le programme suivant compile (j'ai juste rajouté le remplissage de la liste et l'appel à Compar) :
Code :
|
Mais, bizarrement, il ne réalise pas un tri de la liste mais juste son inversion !
En l'occurence, partant de :
Code :
|
J'obtiens :
Code :
|
Quelqu'un saurait-il d'où vient le problème ?
Marsh Posté le 11-02-2005 à 08:54:13
De mieux en mieux, je viens de tester ce programme sous gcc et il marche parfaitement. Le tri est réalisé sans que cela corresponde à l'inversion de l'ordre des éléments dans la liste !
Marsh Posté le 11-02-2005 à 08:59:58
Taz a écrit : greater<Article *> ... |
C'est vrai que ça peut paraître bizarre mais VC++6 semble le réclamer donc ...
Sinon faudrait regarder dans la STL de VC++6 comment est déclarer greater, il faut peut être surdéfinir une de ses fonctions.
Marsh Posté le 11-02-2005 à 09:31:51
ben on telecharge une STL rogue wave et zou, la stl de wc++ 6.0 on en parle plus.
Marsh Posté le 11-02-2005 à 09:33:31
j'ai pas dit que c'était bizarre, j'ai dit 'const un jour, const toujours'
Marsh Posté le 11-02-2005 à 17:10:55
Tu veux dire greater<const Article *>
Ben en tout cas avec g++ ça a pas l'air d'être le cas vu qu'il le rajoute lui même ...
Code :
|
Enfin je peux me tromper
Marsh Posté le 11-02-2005 à 17:33:56
désolé, des fois j'ai du mal, dans STL c'est souvent le bordel pour savoir si la constness est portée par le type ou pas ... vive les traits
Marsh Posté le 10-02-2005 à 17:02:10
Bonjour,
j'essaye de trier une liste de pointeurs sur des objets Article avec un foncteur (ce qui doit être la seule possibilté). Malheureusement, à la compilation, j'ai le message suivant :
Mon programme est le suivant :
Sauriez vous d'où provient mon problème ? Je travaille avec Visual C++ 6.0 ce qui peut aussi générer des erreurs avec la STL je crois !
Merci d'avance de votre aide !