J'ai un callback de la forme "void (*callback)(void* data)" que je dois
utiliser pour que ma classe appelle une de ses méthodes.
Ça pourrait être simple : je déclarerais une fonction qui prendrait
l'instance de la classe en argument(dans "data" de "*callback").
Seulement :
1- cette méthode à appeler est privée
2- la fonction pointée par le callback ne doit pas être accessible par
autre chose que cette classe
J'ai donc pensé à utiliser une fonction "friend" déclarée dans un espace
de nom anonyme.
Ce qui me donne cette erreur de compilation :
'void<unnamed>::friendMeth(nm_test::A&)' should have been declared
inside '::'
// Prototype de ma classe A
namespace nm_test
{
class A;
}
// Le passage par cette fonction est imposée
// Il faut que j'appelle ma méthode par le pointeur en argument de cette
fonction.
void CallBack(void(*funcPtr)(nm_test::A&),nm_test::A& a);
// Prototype de ma classe Friend sur laquelle va pointer FuncPtr
// Cette fonction est anonyme car elle doit être visible seulement par la
classe "A"
namespace
{
void friendMeth(nm_test::A& a);
}
namespace nm_test
{
class A
{
private:
// Une variable à afficher
int myVar;
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"), ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une fonction externe, appelons-la "Ext", qui prend en argument une fonction et un pointeur :
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"),
ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une
fonction externe, appelons-la "Ext", qui prend en argument une
fonction et un pointeur :
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"), ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une fonction externe, appelons-la "Ext", qui prend en argument une fonction et un pointeur :
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"), ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une fonction externe, appelons-la "Ext", qui prend en argument une fonction et un pointeur :
C'est exactement $ce que je cherchais, et c'est encore plus simple que ce que je pensais (qui a dit que C++ était compliqué ? ;-) ) Un grand merci Fabien !
J'ai un callback de la forme "void (*callback)(void* data)" que je dois
utiliser pour que ma classe appelle une de ses méthodes.
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"),
ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une
fonction externe, appelons-la "Ext", qui prend en argument une
fonction et un pointeur :
C'est exactement $ce que je cherchais, et c'est encore plus simple que ce
que je pensais (qui a dit que C++ était compliqué ? ;-) )
Un grand merci Fabien !
Je ne comprends pas d'où vient cette fonction (avec les "nm_test::"), ni à quoi elle sert.
Si j'ai bien suivi, tu es dans le cas classique où tu veux appeler une fonction externe, appelons-la "Ext", qui prend en argument une fonction et un pointeur :
C'est exactement $ce que je cherchais, et c'est encore plus simple que ce que je pensais (qui a dit que C++ était compliqué ? ;-) ) Un grand merci Fabien !