#include <iostream>
#include<cstdio>
#include<typeinfo>
using std::cout;
using std::endl;
class foo;
class bar
{
public:
bar()
{
}
bar(void (*getNextValue)(void)):memberFunctionPointer(getNextValue)
{
}
void calltoderivedslass()
{
// *memberFunctionPointer();
((bar*)this)->bar::memberFunctionPointer;
}
void (foo::*memberFunctionPointer)();
};
class foo : public bar
{
public:
foo():bar(static_cast<foo::*memberFunctionPointer>(&foo::hello))
{
}
void hello()
{
printf("Hello \n\n");
}
};
void byebye()
{
cout << "bye" << endl;
}
int main()
{
foo testfoo;
//((testfoo).*(testfoo.memberFunctionPointer))();
return 0;
}
classname.cpp: In constructor "bar::bar(void (*)())":
classname.cpp:15:68: error: cannot convert "void (*)()" to "void (foo::*)()" in initialization
classname.cpp: In constructor "foo::foo()":
classname.cpp:29:25: error: expected type-specifier
classname.cpp:29:25: error: expected ">"
classname.cpp:29:25: error: expected "("
classname.cpp:29:30: error: expected unqualified-id before "*" token
classname.cpp:31:2: error: expected "{" at end of input
attentes:
Je souhaite initialiser le pointeur de fonction de classe de base pour l'initialiser pointe vers la classe dérivée fonction de membre. Je veux initialiser cela en créant un objet de classe dérivée. A partir de la classe de base, je veux appeler la fonction de classe dérivée en utilisant le pointeur de fonction acquis.
Merci d'avance pour tous.
Si vous utilisez POO correctement il n'y a pas besoin d'utiliser des pointeurs de fonction .. Considérez les programmeurs qui devront maintenir votre code .. –
ouais, il est nécessaire d'utiliser le pointeur de fonction. Un rappel doit être appelé quand une erreur se produit dans une lecture DB, donc j'ai besoin de pointeur de fonction, Ne pas faire de la difficulté dans la maintenance du code. Merci :) –