librairie => bibliothèque, merci.
Malheureusement, un pointeur sur fonction et un pointeur sur fonction membre ont des types différents, et ne sont donc pas compatible.
Tu peux forcer un pointeur sur membre à "rentrer" dans un pointeur sur fonction, via "reinterpret_cast<fptr>(B1.*fBPtr)", mais tu auras un résultat erroné.
Tu peux tenter d'utiliser des membres statiques, qui sont au final de simple fonction.
Si tu peux modifier la bibliothèque, alors utilise du boost::bind + boost::function, qui remplace très avantageusement tous les pointeurs sur fonctions/membres.
Code C/C++ :
#include <iostream>
typedef int Type1;
typedef int Type2;
class B;
typedef void (*fptr)(Type1&, Type2&);
typedef void (B::*fBPtr)(Type1&, Type2&);
class A
{
public:
void methode1(fptr toto)
{
Type1 a = 5;
Type2 b = 10;
toto(a, b);
}
};
class B
{
public:
B(int param)
{
param_ = param;
std::cout << param_ << std::endl;
}
static void f_B(Type1& var1, Type2& var2)
{
std::cout << "var1 = " << var1 << ", var2 = " << var2
<< ", param = " << param_ << std::endl;
}
private:
static int param_;
};
int B::param_ = 0;
int main()
{
A A1;
for(int i = 0; i < 10; ++i)
{
B B1(i);
A1.methode1(&B::f_B);
}
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question