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 :

Problème de pointeur ?


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Problème de pointeur ?
    Bonjour à tous !

    Je suis novice en C++ et Qt. Je rencontre actuellement un problème à savoir :

    erreur : C3867: &'SdmSimConnect::GestionEvenements'ÿ: liste d'arguments manquante dans l'appel de fonctionÿ; utilisez 'SdmSimConnect::GestionEvenements' pour cr‚er un pointeur vers membre
    Je n'arrive pas du tout à régler mon problème, j'ai pas mal cherché je trouve des exemples sur la création et l'utilisation de pointeur mais c'est vraiment très compliqué alors je viens vers vous.

    sdmanager.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "sdmanager.h"
     
    SDManager::SDManager()
    {
    }
     
    void SDManager::DLLStart(void)
    {
        // Ouvrir une connexion SimConnect
        if(SUCCEEDED(SimConnect_Open(&gSimConnect.gSimConnectHandle, "SkyDream Manager", NULL, 0, NULL, SIMCONNECT_OPEN_CONFIGINDEX_LOCAL)))
        {
            // Enregistrer le gestionnaire d'événements SimConnect
            SimConnect_CallDispatch(gSimConnect.gSimConnectHandle, SdmSimConnect::GestionEvenements, NULL);
        }
    }
     
    void SDManager::DLLStop(void)
    {
        // Fermer la connexion à SimConnect
        SimConnect_Close(gSimConnect.gSimConnectHandle);
    }
    sdmsimconnect.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include "sdmsimconnect.h"
     
    ...
     
    void SdmSimConnect::GestionEvenements(SIMCONNECT_RECV *pData, DWORD cbData, void *pContext)
    {
    // Gérer les événements SimConnect
        switch(pData->dwID)
        {
            case SIMCONNECT_RECV_ID_OPEN:
                // Lorsque la connexion à SimConnect est ouverte, on créé les menus
                OnRecvOpen((SIMCONNECT_RECV_OPEN*)pData);
            break;
     
            case SIMCONNECT_RECV_ID_EVENT:
                // Gestion d'événement pour les actions sur les menus
                OnRecvEvent((SIMCONNECT_RECV_EVENT*)pData);
            break;
     
            case SIMCONNECT_RECV_ID_SIMOBJECT_DATA:
                // Gestion d'événement pour la récupération de données du simulateur
                OnRecvSimObjectData((SIMCONNECT_RECV_SIMOBJECT_DATA*)pData);
            break;
        }
    }
     
    ...
    J'ai évidemment testé avec mon objet crée gSimConnect.GestionEvenements(), mais là j'ai une erreur qui me dit que ma fonction GestionEvenements() ne prends pas 0 paramètres.

    Un grand merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Je ne connais pas ton API ni ton compilateur mais d'après cet exemple, la fonction de callback n'est pas une fonction membre, c'est une fonction normale. Je n'ai jamais réussi à faire un pointeur sur une fonction membre mais j'ai toujours réussi à contourner le problème. Par exemple la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void SdmSimConnect::GestionEvenements(SIMCONNECT_RECV *pData, DWORD cbData, void *pContext)
    ne serait pas membre mais friend :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //.cpp
    void GestionEvenements(SIMCONNECT_RECV *pData, DWORD cbData, void *pContext)
    //.h
    MaClass
    {
    //...
    friend void GestionEvenements(SIMCONNECT_RECV *pData, DWORD cbData, void *pContext)
    //...
    };
    "friend" n'est pas obligatoire, ça permet juste à une fonction non membre d'accéder aux attributs privés et protégés.
    Après, si tu nous donnais le numéro de ligne de l'erreur on pourrait mieux t'aider
    Bon courage

  3. #3
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Essayez : SimConnect_CallDispatch(gSimConnect.gSimConnectHandle, &SdmSimConnect::GestionEvenements, NULL);

    J'avoue ne pas etre tout a fait sur mais bon...

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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