Tri Alphabetique d'un vector de pointeurs vers objets
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:
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:
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:
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:
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:
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?