Bonjour à toutes et à tous,
Dans une application "Arduino", j'utilise une bibliothèque que j'ai créée (un bon millier de lignes) dont la partie congrue révélant le problème est la suivante :
fichier "BaseComp.h" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifndef BaseComp_h #define BaseComp_h #include <Arduino.h> class CompBase { public: CompBase() { // constructeur surAppui = NULL; } void (* surAppui)(); // pointeur sur une fonction d'action en cas d'appui sur le composant virtual void select(); }; #endif
le fichier "BaseComp.cpp" :
Dans l'appli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <Arduino.h> #include <BaseComp.h> void CompBase::select() { // fonction virtuelle if (surAppui != NULL) surAppui(); }
Qu'est-ce que "BaseComp ? C'est l'équivalent d'une bibliothèque de composants visuels qui répondent à des évènements. Dans mon cas, c'est un appui sur l'écran tactile qui est détecté via la méthode "select()" et qui, si un méthode a été attachée à la variable "surAppui", va effectuer ce que doit faire cette méthode (ici, le méthode "maProcedure()")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ... void maProcedure() { ...} CompBase monComposant; ... monComposant.surAppui = &maProcedure
Le problème semble venir de l'affectation de la méthode "maProcedure" à la variable "surAppui" de l'instance "monComposant" de la classe "CompBase".
Pour en revenir au problème, si je n'affecte pas de méthode à la variable "surAppui", le problème disparait ... comme tout l'intérêt de ma construction.
Pour autant je subodore que le problème tourne autour de cette affectation. Vous semble t-elle correcte ? quel pourrait être le "bug" dans tout ça ?
Je vous remercie d'avoir déjà pris la peine de lire tout cela et vous remercierai encore de votre aide.
Cordialement.
Pierre
Partager