Bonjour,
Je suis entrain de finaliser mon application et j'aurai jamais cru qu'une fonction de tri allait me donner autant de mal.
Je voudrais pouvoir trier mes objets mais je n'arrive pas a trouver la bonne solution.
Voici l'un de mes objets :
toutes les autres fonctions...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Classe { protected: static unsigned long compteur; //adding a counter static unsigned long vivants; //how many objetcts alive unsigned long idClasse; Texte *Race; (chaine de caractères) Texte *PersoClasse; (chaine de caractères) protected: // function members void Allocate(void);
et les autres get et set...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void setRace (const char *aRace); char* getRace (char * abuf, unsigned int bufsize); Texte& getRace (Texte& aRace);
Lorsque je crée une nouvelle Classe ou que je lit mon fichier j'utilise la fonction
AddPtr qui se trouve dans mon ContPtr.cpp :
Le vptr c'est mon vector il est declaré dans le ContPtr.h comme suis :
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 template <typename ENTITY> ENTITY* ContPtr<ENTITY>::AddPtr (ENTITY* const ptr) { if (!ptr) return 0; // no data if (FindPtr(ptr)) return 0; // already there if (!idOwner) idOwner=this; // no master yet, // I become the master! vptr.push_back(ptr); iter = vptr.end()-1; if (!isOwner()) idOwner->AddPtr(ptr); // if I'm not the master // I ask the master to also store this address return(*iter); }
vector<ENTITY *> vptr;
J'ai ajouté une fonction de tri dans mon ContPtr.cpp :
et je voudrais l'appeler dans mes applic.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 template <typename ENTITY> void ContPtr<ENTITY> :: Tri (void) { std :: sort (vptr.begin(), vptr.end(), ??); }
Mais je ne sais pas comment créer ma fonction de tri en sachant que pour ma class Classe je voudrai trier les objets par rapport aux donnés qui se trouvent dans la variable Race.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void Applic<Classe, FormClasse>::Sort(void) { cnt.Tri(); //cnt est une variable de type ContPtr, chaque applic a la sienne List(); }
Le fait est que mon vecteur ne contient que des pointeurs vers mes objets
donc comment lui dire qu'il va faire son tri par rapport a une telle ou telle variable contenue dans l'objet et de type chaine de caractères?
Partager