Je souhaite passer une fonction membre de classe A à classe B via un pointeur de fonction en tant qu'argument. S'il vous plaît aviser si cette route mène quelque part et m'aider à remplir le nid-de-poule.Pointeur de fonction incompréhensible - passage en argument
#include <iostream>
using namespace std;
class A{
public:
int dosomeA(int x){
cout<< "doing some A to "<<x <<endl;
return(0);
}
};
class B{
public:
B(int (*ptr)(int)){ptr(0);};
};
int main()
{
A a;
int (*APtr)(int)=&A::dosomeA;
B b(APtr);
return 0;
}
Ce brillant morceau de code me laisse avec l'erreur du compilateur:
cannot convert
int (A::*)(int)' to
int (*)(int)' in initialization
Tout d'abord je veux compiler.
Deuxièmement, je ne veux pas que dosomeA soit STATIQUE.
Le concept que vous devez obtenir est que les fonctions membres non statiques requièrent une instance de la classe à appeler. Cela n'a tout simplement pas de sens autrement. – GManNickG