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 :

Tableau de pointeurs de fonctions


Sujet :

C++

  1. #1
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut Tableau de pointeurs de fonctions
    Bonjour,
    Dans le cadre d'un programme en C++, l'utilisation d'un tableau de pointeurs de fonctions me serait d'une grande utilité!
    Et j'ai pensé à aller voir ici avant de poster : http://www.developpez.com/c/megacours/x2012.html

    Dans un namespace Raws, je vais définir les fonctions qui seront pointées ...
    Comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    namespace Raws
    {
              int Co(wxString f,wxString t,wxString a)
              {
                  wxMessageBox("Co a été exécutée");
                  return 1;
              }
    };
    Et donc je fais cela pour déclarer et initialiser mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    using namespace Raws;
     
    typedef int (*pfunc)(wxString,wxString,wxString);
     
    pfunc t[150];
    t[0] = &Co ;
    Et voici l'erreur sortie droit du compilo (je suis sous dev-c++, donc mingw) :

    12 C:\Alp\wxcpp\functable.h expected constructor, destructor, or type conversion before '=' token
    12 C:\Alp\wxcpp\functable.h expected `,' or `;' before '=' token
    La ligne 12 étant :
    Si vous pouviez m'aider à résoudre ce problème, je vous en remercierai énormément...

    Alp

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    J'ai quand même une question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    t[0] = &Co ;
    est destiné à copier l'adresse de ton objet en première position du tableau... Est-ce bien ce que tu veut faire?

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    elles est ou, cette ligne de code?
    si elle n'est pas dans une fonction/méthode, ça ne marchera pas...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Reggae > oui c'est bien ce que je veux faire, je vais ensutie en remplir tout le tableau, de pointage de fonctions...
    Cependant j'aimerai bien faire marcher le premier, avant
    La ligne de code ne marchera que si elle est dans une fonction? C'est à dire par exemple si je fais une fonction RawInit() disons, dans laquelle je mets les assignations aux adresses de fonctions, là ca compilera?
    Merci de vos réponses,
    Alp

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Un pointeur sur fonction membre n'est pas la même chose qu'un pointeur sur fonction. (FAQ ?)
    Avec boost.function (souvent utilisé conjointement avec boost.bind), il y a moyen de combiner les deux choses.

    EDIT: Oups. L'espace noms m'a induit en erreur.
    EDIT2: Tu a bien chargé la définition de Co? Essaie à tout hasard de donner le nom complet.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Salut,
    Avant de mettre le using namespace Raws j'avais mis le nom entier, à savoir Raws::Co et bien vec le & devant et compagnie, même erreur, donc j'ai essayé en l'enlevant.
    La solution de l'assigner seulement dans une fonction/méthode est-elle la bonne vous croyez ?
    Sortirait-il une erreur telle si c'était le cas?
    Alp

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    ce que je vois, c'est que:
    est une instruction (pas une initialisation)
    Donc, elle ne peut être située en dehors de toute fonction. Il te faut obligatoirement mettre cette instruction dans une fonction ou une méthode.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    En effet le problème semble résolu...
    Je croyais que l'on pouvait compter ça comme une initialisation mais bon.
    Merci beaucoup en tout cas,
    Bonne progr' à tous

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/09/2011, 15h26
  2. tableau de pointeur de fonction
    Par exhortae dans le forum C
    Réponses: 2
    Dernier message: 31/12/2007, 13h33
  3. [BCB6]Tableau de pointeurs sur fonctions
    Par rtg57 dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/10/2006, 21h49
  4. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 11h47

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