cs_mayti
Messages postés36Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention11 juin 2005
-
26 mars 2005 à 18:21
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 2006
-
26 mars 2005 à 21:45
Bonjour, voilà j'esseye d'utiliser une fonction dans une structure pour par exemple effacer un fichier:
struct FICHIER
{
char *path;
static void delete();
};
je l'utiliserais comme ça:
FICHIER file;
file.path = "c:\\fichier.exe";
file.Delete < ici ça doit appeller la fonction delete()
void Delete(char *File)
{
DeleteFile(File)
}
Le code compile mais je dois mal utiliser la fonction dans la structure, comment faut il faire ?
et aussi comment passer le paramétre file.path à Delete() juste avec file.Delete ?
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 26 mars 2005 à 19:13
Avec le plus grand des etonnements, je viens d'essayer de 'mettre' une fonction dans une structure et ca marche..Il faut utiliser un pointeur de fonction dans ta structure :
#include <stdio.h>
#include <stdlib.h>
struct fonc {
int (* pCoucou)(char *);
};
int Coucou(char *szBuffer)
{
printf("coucou");
return 0;
}
int main()
{
struct fonc Func;
Func.pCoucou = Coucou;
Func.pCoucou("Hello");
system("PAUSE");
return 0;
}
Voila, je ne sais pas du tout s'il est 'correct' de faire ce genre d'operations en C, mets toi au C++, je crois savoir que ce genre de trucs est la base.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 26 mars 2005 à 19:36
Au niveau de la synthaxe ca serait plutot:
(*Func.pCoucou)("Hello");
Et oui, meme si c'est possible, le C n'offre pas de support pour la
programmation orientée objet donc se mettre au C++ est une solution.
Il existe aussi des headers en C permettant de faire de la
programmation orientée objet et générique à l'aide de jeux de macros,
mais c'est trés laborieux, ca ne peut etre une solution uniquement pour
les envirronements dépourvus de compilateurs C++ (ou de cfront).
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 26 mars 2005 à 21:11
Tu ne peux pas, c'est possible en C++ car l'adresse de l'instance est
passée en paramètre caché (pointeur this), mais en C tu dois passer
explicitement file.path en paramètre, ou plus généralement l'adresse de
l'instance.
Vous n’avez pas trouvé la réponse que vous recherchez ?