À l'heure actuelle, j'ai un client qui envoie une liste de commandes à mon serveur dont il veut des données. Mon serveur charge ces commandes via une DLL à l'aide GetProcAddress, par exemple:Modèle de conception de rappel
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
où initiailizeDLL est défini comme:
typedef int (CALLBACK* InitializeDLL)(int,int);
Le bon client envoie maintenant le nom de la commande comme une chaîne pour laquelle il veut des données pour. J'ai toute une liste de commandes que j'aimerais pouvoir utiliser, et je n'ai pas d'idée sur la façon de l'implémenter de manière efficace. Je pensais à créer une carte et en utilisant la chaîne pour le nom comme une clé, puis le CALLBACK * pour la fonction appropriée comme un pointeur. Mais alors je devrais aussi le jeter après. Je suis principalement un programmeur Java, et pas le meilleur programmeur C++, donc je ne suis pas sûr que cette idée de Map fonctionnera même ou comment gérer le casting à la fin. En outre, j'ai regardé le modèle de commande sur Wikipedia, mais je ne sais pas comment cela serait mis en œuvre dans ce cas.
'l'aide d'une carte <>' ne semble pas être une mauvaise idée. Essayez-le, et si vous rencontrez des problèmes, vous pouvez revenir et poser des questions différentes. La bonne chose à propos des conteneurs STL est qu'il est relativement indolore de les remplacer par un autre, tant que vous «typedef» le conteneur. – jxh
Est-ce que tous les pointeurs de fonction auront la même singularité? – Brady
La plupart des pointeurs de fonction sont similaires, bien qu'un couple renvoie double au lieu de int et le nombre de paramètres peut varier. –