I am trying to initialize a struct with a function pointer, however I am having trouble doing so unless it is done with a global function. The following code works:
float tester(float v){
return 2.0f*v;
}
struct MyClass::Example{
typedef float(*MyFunc)(float);
MyFunc NameOfFunc;
float DoSomething(float a){
return NameOfFunc(a);
}
};
struct Example e;
e.MyFunc = tester;
My problem is whenever I try to do this with the tester
function as a function in MyClass
the code no longer works. In other words, I change the tester function to:
float MyClass::tester(float v){
return 2.0f*v;
}
Any and all help is appreciated (including links)! I have tried googling around for the problem but am unsure what to search (I've tried things such as "C++ struct function pointer initialization in class" to no avail)
If you want
NameOfFunc
to point tofloat MyClass::tester(float v)
then theMyfunc
declaration must be,But then it cannot point to
float tester(float v)
I don't think you can have one type that can point to either.Also shouldn't
e.MyFunc = tester;
bee.NameOfFunc = tester;
?This is because when you put the function as a member of the class, it will no longer be of the type
float (*)(float)
, but rather,float (MyClass::*)(float)
.Look into
std::function
andstd::mem_fn
to solve these problems.Example: