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