IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Memoriser l'adresse d'une fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Par défaut Memoriser l'adresse d'une fonction
    Bonjour,

    lorsque j'utilise une DLL et son CallBack je reçois l'adresse de la fonction que je dois utiliser dans l'application qui utilisera la DLL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	extern "C" __declspec(dllexport)void StateCallBack(void(*callfunction)(int i))
    	{
    		MaClasse::fonction = callfunction;  // erreur : pas du même type
    	}
    je receptionne correctement callfunction. Mais afin de l'utiliser ailleurs je souhaite enregistrer l'adresse de cette fonction dans une variable publique de ma classe :

    public static void(_cdecl*)(int) Fonction; // erreur que type utilisé ?

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    Il faut que tu utilises un type pointeur de fonction :

    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    void (*the_callback)(int);
     
    //plus loin :
    the_callback = callfunction;
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef void (*CALLBACK)(int);
    CALLBACK the_callback;
     
    //plus loin :
    the_callback = callfunction;

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Une fonction membre d'une classe T qui retourne rien et qui prend un int est de type différent d'une fonction libre qui retourne rien et qui prend un int.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Par défaut
    Merci, ça marche nickel !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. adresse d'une fonction surchargée.
    Par deebou dans le forum Débuter
    Réponses: 3
    Dernier message: 17/10/2008, 10h00
  2. Réponses: 1
    Dernier message: 15/09/2008, 14h38
  3. adresse d'une fonction dans une structure
    Par VITALTH dans le forum Débuter
    Réponses: 5
    Dernier message: 22/08/2008, 11h02
  4. Réponses: 7
    Dernier message: 30/05/2008, 03h42
  5. Conversion de l'adresse d'une fonction
    Par neerylka dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2007, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo