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 ( un pointeur vers une fonction avec parametres ) en argument à une fonction


Sujet :

Langage C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 4
    Points
    4
    Par défaut passer ( un pointeur vers une fonction avec parametres ) en argument à une fonction
    Amis du soir...

    Je bloque à la réalisation de mon programme avec BCB6:

    J'ai écrit une classe "matrice" qui contient le résultat d'une requête SQL (tableau 2D)

    D'autre part, j'ai un TStringGrid (aie..on s’écarte du c++ standard..) dans lequel je souhaite voir apparaitre les données de la matrice.

    Dans l’événement TStringGrid->DrawCell, je veux appeler une méthode de la classe matrice qui afficherait la donnée dans la case correspondante.(méthode matrice->Remplit_Cellule() )

    Jusque là, ça fonctionne, j'appelle la fonction ainsi depuis StringGrid->DrawCell:
    matrice->Remplit_Cellule (StringGrid1,ACol,ARow,Rect);

    Maintenant, je souhaite appeler une fonction Inhiber(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y) à chaque click d'une cellule, depuis la classe matrice.
    Je pensais écrire qqchose comme ça:

    matrice->Remplit_Cellule (StringGrid1,ACol,ARow,Rect, (Inhiber)(StringGrid1) (1)(1)(ACol)(ARow) );

    Mais j'obtiens un message d'erreur à la compilation:

    qui me renvoie à ceci dans l'aide:
    E2034 Cannot convert 'type1' to 'type2'
    An assignment, initialization, or expression requires the specified type conversion to be performed, but the conversion is not legal.

    In C++, the compiler will convert one function pointer to another only if the signature for the functions are the same. Signature refers to the arguments and return type of the function. For example:

    myex( int );

    typedef int ( *ffp )( float );
    test()
    {
    ffp fp = myex; //error
    }

    Seeing that myex takes an int for its argument, and fp is a pointer to a function which takes a float as argument, the compiler will not convert it for you.

    In cases where this is what is intended, performing a typecast is necessary:

    myex( int );

    typedef int ( *ffp )( float );
    test()
    {
    ffp fp = (ffp)myex; //ok
    }

    Au passage voici la déclaration de la fonction Remplit_Cellule dans la classe matrice:
    void Remplit_Cellule(TObject *Sender,int ACol, int ARow, TRect &Rect,void (*OMU) (TObject *,TMouseButton,TShiftState,int,int)=NULL );

    Je ne comprend pas comment passer les paramètres de la fonction Inhiber lors de l'appel à la méthode Remplit_Cellule.

    Pouvez vous m'aider ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    En l'absence de détail, je ne comprends absolument pas le rôle de chacune des fonctions. En faisant abstraction du contexte qui semble ne pas avoir aucune espèce de rapport avec le problème, je dirais que tu essaies d'appeler une méthode à partir d'un pointeur sur fonction membre sans avoir précisé quel était l'objet sur lequel la méthode s'appliquait. Mais ce n'est qu'un pari.

Discussions similaires

  1. Appellez une fonction avec parametres
    Par SonnyFab dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2010, 15h27
  2. Pop up avec parametre php ? pour une utilisation avec get
    Par bullrot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2008, 13h17
  3. Réponses: 1
    Dernier message: 15/09/2008, 14h38
  4. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  5. créer une fonction avec parametre optionnel
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2006, 20h51

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