Accueil > Forum > > > > Appels des fonctions
Appels des fonctions
dimanche 24 septembre 2006 à 17:09:08 |
Appels des fonctions

goast_tu
|
Salut!
Est ce que vous pouvez me dire comment on fait pour appeler une
fonction presante dans le programme si on connait son nom sous forme
d'une chaine de caracteres. Par ex si dans mon programme j'ai une
fonction toto() et j'aimerais l'appeler de la facon suivante:
appeler("toto");
Merci
|
|
dimanche 24 septembre 2006 à 17:21:39 |
Re : Appels des fonctions

nightlord666
|
Impossible en C++, ou alors tu la déclare en __declspec(dllexport),et tu utilise LoadLibrary / GetProcAddress pour lancer ta fonction.
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
dimanche 24 septembre 2006 à 18:35:31 |
Re : Appels des fonctions

luhtor
|
Si c'est possible, mais un peu complexe.
Tu créer un tableau de pointeur de fonction.
typedef void (pointeur_fonction*)(void); => un truc du genre.
std::map<std::string, pointeur_fonction>;
Apres tu ajoutes les fonctions que tu veux, dans ton cas:
void toto();
map[std::string("toto")] = &toto;
Puis tu définies une fonction Appeler(const std::string & _func) qui fait:
map[func]();
Ex:
#include <iostream>
#include <map>
#include <string>
typedef void (*_function)(void);
void toto()
{
std::cout << "coucou" << std::endl;
}
int main()
{
std::map<std::string, _function> test;
test[std::string("toto")] = &toto;
test[std::string("toto")](); <= appel de la fonction.
system("PAUSE");
return 0;
}
Mais bon, faut etre un peu tordu quand meme. Pk tu veux faire un truc pareil ?
|
|
dimanche 24 septembre 2006 à 18:49:49 |
Re : Appels des fonctions

nightlord666
|
En effet j'avais pas pensé au tableau de pointeurs de fonctions, au temps pour moi...
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
dimanche 24 septembre 2006 à 18:56:43 |
Appels des fonctions

goast_tu
|
luhtor et comment on le fais en C car je connai pratiquement rien en C++
|
|
dimanche 24 septembre 2006 à 18:58:47 |
Re : Appels des fonctions

goast_tu
|
j'ai une ptite question il manque pas par hasard un * devant
test[std::string("toto")](); <= appel de la fonction.
?
|
|
dimanche 24 septembre 2006 à 19:17:30 |
Re : Appels des fonctions

luhtor
|
Réponse acceptée !
Euh pour l'étoile, il doit surement en manquer une. Mais j'ai un petit pb, car meme ca, ca marche:
test[std::string("toto")] = &toto;
test[std::string("toto2")] = &toto2;
(****test[std::string("toto")])();
(****test[std::string("toto2")])();
Doit y avoir une raison, ou alors un hasard extraordinaire, je vais essayer de voir pk.
En C ? C'est un peu la é'"(*-ù"$'(^-.
Ca ressemblera plutot a un truc comme ca.
#include <iostream>
typedef void (*_function)(void);
void toto()
{
std::cout << "coucou" << std::endl;
}
void toto2()
{
std::cout << "coucou 2" << std::endl;
}
int main()
{
char * nom[2] = { "toto", "toto2" }; // <= allocation statique
_function pointer[2] = { &toto, &toto2 };
char * call_what = "toto1";
for (int k = 0 ; k < 2 ; ++k)
if (strcmp(call_what, nom[k]) == 0)
pointer[k]();
system("PAUSE");
return 0;
}
Reste a organiser tout ca pour faire un truc propre.
|
|
dimanche 24 septembre 2006 à 19:18:24 |
Re : Appels des fonctions

luhtor
|
Bon j'ai oublié de corrigé, c'est pas call_what = "toto1", mais "toto" ou "toto2" évidemment.
|
|
dimanche 24 septembre 2006 à 19:39:33 |
Re : Appels des fonctions

SAKingdom
|
Réponse acceptée !
cout en C? C'est pas plutot printf?
Pour le reste, ce serais pas plus "propre" avec une structure?
#include <stdio.h>
typedef void (*_function)(void);
typedef struct _p_struct { char *name; _function function;
} POINTEUR_STRUCT;
void toto() { printf("coucou 1\n"); }
void toto2() { printf("coucou 2\n"); }
int main() { POINTEUR_STRUCT _p_struct[2] = {{"toto", toto}, {"toto2", toto2}}; char * call_what = "toto"; for (int k = 0 ; k < 2 ; ++k) if (strcmp(call_what, _p_struct[k].name) == 0) _p_struct[k].function(); system("PAUSE"); return 0; }
C++ (@++) ___________________________________________ Les plus grands esprits trouvent toujours une solution
|
|
dimanche 24 septembre 2006 à 19:41:40 |
Re : Appels des fonctions

niketou
|
#include <iostream> #include <map> #include <string>
//j' ai 20 erreur qui ont l'air de provenir de #include <map>
|
|
Cette discussion est classée dans : fonction, programme, fonctions, appeler, appels
Répondre à ce message
Sujets en rapport avec ce message
net use * /delete EN C++ [ par LeBobo ]
Salut. J'ai un petit programme qui utilise la fonction : system(''net use * /delete'') ; Le problème est que mon programme à une interface graphique w
Creer ses propres fonctions [ par CHENRY ]
En VC++6, avec les MFC, je voudrais ajouter à mon projet un fichier de fonctions et procédures personnelles. J'ai créé un fichier d'en-tete contenant
Vérifier le bon déroulement de mon prog ds 1 TMemo [ par ivdz ]
Bonjour, J'ai développé sous C++ builder 6 un programme avec une interface qui possède des TEdit, 2 boutons (Valider et Quitter) et un TMemo. Le bouto
ouvrir un programme [ par Adeon ]
Salut!y a t-il une fonction qui est cappable d'ouvrir un programme que l'on defini dans la fonction.Bien sure, quand je dis ouvrir, ce n'est pas dans
strcat() ???? [ par supergrey ]
Salut tout le monde, jai un petit probleme avec la fonction strcat() , je commence a peine un programme que deja je bloque la dessus jaimerai de l'aid
attendre que le shell soit fini C++ [ par McK_N ]
Salut,je veux appeler la fonction Shell et je veux que mon programe arrête jusqu'à ce que le shell soit terminé.Comment puis-je le faire avec la fonct
analyseur d'expression [ par loicus ]
Voila, je cherche une fonction, qui pourrait transformer une expression (suite de char) en une ligne de code qui sera utiliser par le programmeex : ma
Démarer un programme [ par supergrey ]
Bonjour, je voudrais savoir comment lancer un .exe a partir d'un programme j'ai essayé ca:system("start c:/Mes jeux/jeu1.exe");Mais cette fonction n'a
à propos des threads [ par GUERRIER_ABSOLU ]
Salut, je voudrais savoir s'i quelqu'un a déjà essayé d'appeler une fonction dans un thread et a remarqué quelque chose d'innatendu. En fait quand j'a
appel a une fonction [ par cyb_dev ]
Bonjour je debute en c et je souhaiterais savoir comment faire pour appeler une fonction.J'aimerais qu'un evenement dans mon programme (une variable à
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|