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" :

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();
}
Dans l'appli :

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
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()")


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