Classes, Vecteurs et Tri... - C++ - Programmation
Marsh Posté le 10-09-2005 à 22:42:27
et le critère de tri, c'est la longueur du libelle puissance le prix ?
Marsh Posté le 11-09-2005 à 11:59:13
Oula non! le tri s'effectue sur le libelle tri sur une string, dsl j'avais pas précisé
Marsh Posté le 11-09-2005 à 18:12:50
reSlt, j'ai pas de makefile, ms je peux mieux m'expliquer en moins de mots :
Code :
|
Non plus sérieusement, le problème est décris dans le début de ce petit quote, et je me demande si ça serait pas mieux ou plus utile d'utiliser l'héritage privé si il s'agit bien de ce que je pense... ^o)
Marsh Posté le 11-09-2005 à 18:29:23
C'est bon j'ai réussi en bidouillant (en faisant ce que j'ai écris au dessus de ce post)... mais je me demande si il y a pas plus simple quand même...
Si ça intéresse qqun :
Code :
|
Marsh Posté le 11-09-2005 à 18:58:48
ça y est tu te decide enfin à nous filer le code t'es pas futé toi ...
tous tes opérateurs sont mauvais. Au minimum leur signature doit être
bool Foo::operator??(const Foo &other) const;
toutes tes fonctions get (quels noms de merde !) doivent aussi être marquées const
Marsh Posté le 11-09-2005 à 20:18:01
et le fait de rajouter 'const' à la fin me permet d'utiliser sort() sur ma classe Article (qui contient plusieurs types privés) ?!
Sa ne dit pas au prog sur quel champ je veux qu'il fasse le tri.. m'enfin...
merci de ton aide 'sympathique' et dsl je couche pas sur le forum pr répondre, sa ne date que d'hier.
Marsh Posté le 11-09-2005 à 20:25:26
Bapt_from_reims a écrit : et le fait de rajouter 'const' à la fin me permet d'utiliser sort() sur ma classe Article (qui contient plusieurs types privés) ?! |
non c'est juste ce qu'on appelle "coder proprement"
Marsh Posté le 14-09-2005 à 15:25:01
bapt : c'est tes operateurs < et eventuellement == qui disent sur quels champs tu veux que se fasse le tri. Et les const sont très importants, c'est pas juste un style, ils doivent avoir la signature que donne Taz quand tu les mets en méthode.
A vu de nez (j'ai pas tout lu), avec des bons const (et mets aussi des bons passages par réference (c'est pas du java !)) ton
sort(v.begin(), v.end());
devrait marcher.
Taz : qu'est-ce t'as contre les methodes get/set ?
Marsh Posté le 14-09-2005 à 20:41:50
ça pue. surtout quand elles sont mal codées. C'est pas la peine d'écrire un get_() si tu sais pas ce qu'est un accesseur. Moi là je ne vois que des modifiers.
Et puis en C++, t'as qu'à quand même moyen de faire sans get/set
X Y::Member() const;
void Y::Member(const X & );
je trouve ça mieux. Corba fait comme ça d'ailleur.
Marsh Posté le 10-09-2005 à 20:15:56
Slt tout le monde, j'ai un pb avec les tris sur une classe, je m'explique :
J'ai une classe Catalogue qui contient (en champ privé) un vector d'Article (Article étant un autre type type défini dans une autre classe Article).
Article contient en champ protected : string libelle, reference et un float pr le prix.
Lors de l'affichage du catalogue, j'aimerais trier les articles sur le libelle de l'article.
J'utilise donc la methode sort() de la STL comme ceci :
je vois bien que dans mon void [i]tri(), sort() ne peut pas trier ma classe article, vu que je ne lui dis pas de prendre le champ libelle
Comment est-ce que je peux procéder??
A noter que j'ai bien "surchargé" (je crois qu'on dit comme sa) l'opérateur < dans la classe Article pr utiliser sort()
--> Please Help =)