Bonjour,
Voilà mon problème: en utilisant la librairie OpenCV je dois utiliser une fonction on_mouse( ....) qui n'est pas dans une classe. Dans cette fonction j'aimerais utiliser des variables appartenant à la classe classeX.
A priori l'astuce dont on m'a parlé est de créer une instance statique qu'on fait pointer sur l'unique instance créer (l'objet lui-même).
Bref j' ai essayé en faisant:
dans "classeX.h":
dans "classeX.cpp":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ClasseX* instance; static classeX* getInstance();
* dans le constructeur:
* déclaration de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part instance = this // afin de pointer sur l'unique instance crée
* utilisation de ca dans ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ClasseX * ClasseX::getInstance() { return instance; }
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
16
17
18
19
20
21
22
23 void on_mouse( int event, int x, int y, int flags, void* param) { char str[10]; { CEssai4View * t = ClasseX::getInstance(); t->mouseX = x; t->mouseY = y; sprintf( str,"%d", x ); CEdit * exp2 = static_cast<CEdit*>(GetDlgItem(IDC_EDIT6)); // on recupère l'edit correspondant exp2->SetWindowText(str); exp2->UpdateData(); sprintf( str,"%d", y ); exp2 = static_cast<CEdit*>(GetDlgItem(IDC_EDIT7)); exp2->SetWindowText(str); exp2->UpdateData(); sprintf(str,"%d,%d",x,y) } } }
mais j'obtiens une erreur de compilation C2597 dans la fonction getInstance().
BONUS: il y a également un probleme avec GetDlgItem(IDC_EDIT6) car il me dit C2660: la fonction ne prend pas 1 argument alors que dans une autre fonction je l'utilise de la même manière et ca marche.
Merci si vous avez pris la peine de lire jusque là.
Partager