J'ai cette 3ème définition de type de partie:Comment passer correctement un pointeur à une fonction membre pour un code tiers?
typedef void (*NexTouchEventCb)(void *ptr);
qui est utilisé dans une fonction dans la bibliothèque 3ème partie:
void NexTouch::attachPop(NexTouchEventCb pop, void *ptr)
Si j'ai un seul fichier .cpp je peux alors appeler avec succès la attachPop
sans erreur du compilateur:
NexButton b0 = NexButton(0, 1, "b0");
void b0PopCallback(void *ptr)
{
// do something here
}
b0.attachPop(b0PopCallback, &b0);
Mais je POO, j'ai donc mes propres fichiers d'en-tête et classe:
MyNextion.h
class MyNextion {
public:
void init();
void b0PopCallback(void *ptr);
private:
NexButton *b0;
}
MyNextion.cpp
#include "MyNextion.h"
void MyNextion::init() {
b0 = new NexButton(0, 1, "b0");
b0->attachPop(/* what should I put here? */);
}
void MyNextion::b0PopCallback(void *ptr) {
// do something here
}
je suis passé par plusieurs questions similaires comme this, this et this un aussi. Mais je ne comprends pas.
Notez que ce code est compilé pour Arduino, qui est un microcontrôleur AVR. Les syntaxes C++ spéciales peuvent ne pas être disponibles.
Pouvez-vous s'il vous plaît me dire comment dois-je appeler b0->attachPop
et pourquoi devrais-je appeler de cette façon?
S'il vous plaît noter que je ne suis pas en mesure de modifier la bibliothèque 3ème partie, qui se trouve ici: https://github.com/itead/ITEADLIB_Arduino_Nextion
Je vais jeter un coup d'oeil sur cette question aussi. J'ai également ajouté une note que je compile pour Arduino qui est un microcontrôleur AVR. – papaiatis
La duplication possbile ne mentionne pas les fonctions membres statiques à faire. – papaiatis
Il y a beaucoup, beaucoup d'autres doublons possibles mais vous pouvez seulement signaler une question avec un. – MrEricSir