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à.








Répondre avec citation
Partager