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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ClasseX* instance;
static classeX* getInstance();
dans "classeX.cpp":
* dans le constructeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
instance = this // afin de pointer sur l'unique instance crée
* déclaration de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
ClasseX * ClasseX::getInstance()
{
	return instance;
}
* utilisation de ca dans ma fonction:
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à.