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

Langage C++ Discussion :

passer l'adresse d'une methode membre à une fonction...


Sujet :

Langage C++

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Par défaut passer l'adresse d'une methode membre à une fonction...
    salut,
    j'ai une fonction de callback pour laquelle je veux passer une methode membre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void EditorScreen::FavInit()
    {
    	FavBar= new FavBar(); // items
    	FavBar->callback(this,EditorScreen::FavShortcutClicked); // enregistre la fonction de callback.
    }
    voici la def de la fct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void EditorScreen::FavShortcutClicked( Uint8 bar, Uint8 slot, Uint8 bank )
    {... }
    et voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void FavBar::callback(EditorScreen* p,  void (EditorScreen::*fct)(Uint8 br, Uint8 sl, Uint8 bk))
    {
    ... }

    voilà j'ai codé ca il y a quelques temps, ca compile et marche tres bien sous VC6 sans le moindre warning...
    je passe sous VS2010, et il me sort une erreur (sans doute, VS2010 respecte t-il mieux les standards...)
    voici l'erreur :
    error C3867: &'EditorScreen::FavShortcutClicked' : liste d'arguments manquante dans l'appel de fonction ; utilisez 'EditorScreen::FavShortcutClicked' pour créer un pointeur vers membre
    sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	FavBar->callback(this,EditorScreen::FavShortcutClicked);
    pourquoi s'attends t-il a des parametres, ce n'est que le nom de la fonction...

    si vous avez une idée, merci de me mettre sur une piste.
    salutation.

    PS : je me suis planté en postant ce message il y a une heure, il s'est retrouvé dans le forum C++/CLI alors que celà ne concerne en rien "CLI" (je dev en C++ simple, non managé, non MFC, non CLI).
    Je ne suis pas arrivé a déplacé mon message original, si un admin peu supprimer celui qui est dans le forum CLI. merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pour accéder aux adresses des membres(entre autres les fonctions), il faut obligatoirement utiliser l'operateur d'adressage & :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FavBar->callback(this,&EditorScreen::FavShortcutClicked);

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Par défaut
    merci, c'était ça....


    ...trop la honte.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par hpfx Voir le message
    merci, c'était ça....


    ...trop la honte.
    Pas de honte a avoir. c'est un peu tordu quand même...
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

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

Discussions similaires

  1. [C#]Accéder à une methode dans une classe d'une DLL externe
    Par Greg34000 dans le forum Services Web
    Réponses: 3
    Dernier message: 28/03/2013, 15h54
  2. Réponses: 14
    Dernier message: 10/09/2009, 19h08
  3. Réponses: 7
    Dernier message: 17/01/2009, 13h10
  4. Appliquer une methode a une variable d une classe ?
    Par Slumpy dans le forum VB.NET
    Réponses: 18
    Dernier message: 07/06/2007, 17h17
  5. Réponses: 11
    Dernier message: 05/10/2006, 13h20

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