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 :

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);
toutes les autres fonctions...
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);
et les autres get et set...

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 :
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);
}
Le vptr c'est mon vector il est declaré dans le ContPtr.h comme suis :
vector<ENTITY *> vptr;

J'ai ajouté une fonction de tri dans mon ContPtr.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(), ??);

}
et je voudrais l'appeler dans mes applic.cpp

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();
}
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.

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?