Problème à appeler différentes fonction dans une liste chainée
Bonjour à tous
Deja je vous explique ce que je veux faire.
Je veux avoir une liste chainée qui contient des objets. jusque là ca va vous suivez? lol
Ensuite j'aimerais qu'à un noeud précis de cette liste chainée, je puisse appeler n'importe quelle méthode de l'objet que la liste stocke.
Ce que j'ai fait maintenant.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| #include <iostream>
#include "GSETEMPLATELIST.h"
using namespace std;
class TOTO
{
private:
int test;
public:
TOTO(){test=0;};
~TOTO(){};
void SetValue(int v){test=v;};
int GetValue(void){return test;};
void Call(char *function_name)
{
string tmp=function_name;
if(tmp.compare("toto")==0)
{
cout << "appel de la fonction toto" << endl;
}
else if(tmp.compare("tutu")==0)
{
cout << "appel de la fonction tutu" << endl;
}
else if(tmp.compare("tata")==0)
{
cout << "appel de la fonction tata" << endl;
}
};
};
void main(void)
{
GSETEMPLATELIST<TOTO> List;//Déclaration d'une liste chainée template de type TOTO
TOTO *toto1,*toto2;
GSENODE<TOTO> *ptr;// Pointeur sur un noeud de la liste chainée de type TOTO
toto1=new TOTO();
toto2=new TOTO();
toto1->SetValue(0);
toto2->SetValue(45);
List.Add(toto1);
List.Add(toto2);
cout << List.GetSize() << endl;//Retourne le nb de noeud. 2 ici
ptr=List.GetNode(0);
if(ptr==NULL)
{
cout << "ptr null" << endl;
}
else
{
cout << ptr->Data->GetValue() << endl;//Retourne 45 car le dernier inséré est le premier de la liste
}
//Data est un pointeur sur les données du noeud
List.CallOn(0,TOTO::Call,"toto");//Appel sur le noeud numéro 0 de la fonction Call
//qui elle meme appelle la fonction toto
List.CallOn(1,TOTO::Call,"toto");
//Appel sur le noeud numéro 1 de la fonction Call
//qui elle meme appelle la fonction toto
List.CallOn(0,TOTO::Call,"tata");
//Appel sur le noeud numéro 0 de la fonction Call
//qui elle meme appelle la fonction tata
} |
J'ai fait une fonction CallOn dans ma liste chainée qui prend en argument premier argument le numéro du noeud sur lequel je veux appeler ma fonction.
Le 2e argument est le nom de la fonction Call. Cette fonction Call se charge d'apeler la fonction dont le nom est passé en 3e argument.
Mon problème arrive avec le nombre d'arguments qui devient variable en fonction du nom de fonction qui est passé en 3e argument.
Si la fonction toto prends 2 argument et la fonction tata aucun, comment je peux faire pour passer les argument ou pas à ma fonction CallOn?