ca depend de ce que tu veux faire mais tu peux utiliser une map et te servir du polymorphisme :
//interface
class A
{
virtual void processCommand(...)=0;
};
class B : public A
{
virtual void processCommand(...)
{
}
};
class C : public A
{
virtual void processCommand(...)
{
}
};
map<string, A *> commands;
void main(void)
{
//phase d'initialisation
commands["test"]= new B(...);
commands["test2"] = new C(...);
//utilisation:
string buffer;
...
map<string, A*>::iterator it = commands.find(buffer);
if(it!= commands.end())
{
(*it).second->processCommand(...);
}
else
{
cout<<"Unknown command"<<endl;
}
}
bon, vla en 30 sec ce ke je ferrais pour pas me prendre la tete et avoir du code un peu propre: fini les cases et les if imbriqués (j'ai pas du tout testé mais ca devrais marcher qd meme).