Convertir pointeur de fonction C++ à c de pointeur de fonction

Je développe une application C++ à l'aide d'une bibliothèque C de. J'ai envoyer un pointeur à la fonction de la bibliothèque C.

C'est ma classe:

 class MainWindow : public QMainWindow {  
     Q_OBJECT  
     public:  
     explicit MainWindow(QWidget *parent = 0);  
     private:  
     Ui::MainWindow *ui;
     void f(int*);

 private slots:
     void on_btn_clicked(); 
};

C'est mon on_btn_clicked fonction:

void MainWindow::on_btn_clicked()
{
    void (MainWindow::* ptfptr) (int*) = &MainWindow::f;

    c_library_function(static_cast<void()(int*)>(ptfptr), NULL);

}

La fonction C devriez obtenir un pointeur vers une fonction : void f(int*).
Mais le code ci-dessus ne fonctionne pas, je ne peux pas réussir à convertir ma f fonction de membre du pointeur souhaité.

Quelqu'un peut s'il vous plaît aider?

fonctions à l'intérieur d'une classe ne sont pas recommandés pour accéder aux.
double possible de la Fonction de pointeur de fonction membre de classe de problèmes
Votre question n'a aucun sens. Fonction C++ les pointeurs et C pointeurs de fonction sont la même chose (sauf pour certains mineurs de liaison de détails). Mais vous devez comprendre que MainWindow::f n'est pas une fonction et &MainWindow::f n'est pas un pointeur de fonction, c'est un membre fonction (ou respectivement un pointeur vers une fonction membre).
Pour débuter en C++ une fonction membre pour être utilisé comme un pointeur de fonction devrait être statique. Apportant C dans l'équation ne serait pas supprimer cette exigence.
Pour être 100% conforme aux normes (ce qui pourrait être pertinent pour les exotiques de matériel), vous devez utiliser un extern "C" fonction que le callback.

OriginalL'auteur RRR | 2013-11-06

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *