je voudrais passer une fonction membre à une subrooutine 'C', j'ai donc fait cela:

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
 
#ifdef __cplusplus
  extern "C" {
#endif
  extern int my_func_C_(char *,void(*My_class_Cpp::func)(int *,int *,int *,double *));
#ifdef __cplusplus
  } // "C"
#endif
 
class My_class_Cpp
{
  void  Une_fonction();
  void my_func_membre(int *n,int *ngood,int *nstop,double *l);
  ...
};
 
void My_cass_Cpp::Une_fonction()
{
   my_func_C_("toto",&My_class_Cpp::my_func_membre);
 }

Ca compile et ca link, ca fonctionne mais les variable n, ngood..., valent n'importe quoi.
La question que je me pose est que dans le code 'C' le prototype de la fonction est déclarée comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  int my_func_C_(char *,void(*func)(int *,int *,int *,double *));
et ne connait donc pas My_class

enfin, si j'ai été assez clair et si vous avez une idée pour réaliser ca, merci d'avance