这是我之前帖子的后续问题:C++: Initializing Struct and Setting Function Pointer
我的新问题是如何在结构中调用指向成员的函数?我已将我以前的代码修改为:
float MyClass::tester(float v){
return 2.0f*v;
}
struct MyClass::Example{
float(Scene_7::*MyFunc)(float);
float DoSomething(float a){
return (MyFunc)(a); //ERROR, SEE BELOW FOR OUTPUT
}
};
然后我如下设置函数,并将结果输出到调用:
struct Example e;
e.MyFunc = &MyClass::tester;
std::cerr << e.DoSomething(1.0f) << std::endl;
我收到以下错误:必须使用“.”或“->”来调用指向成员函数的指针...
问题是我不知道该怎么做。我猜我必须在 DoSomething
中调用类似 this->*(myFunc)(a)
的东西,但是 this
引用了结构。我曾尝试搜索“this within struct pointer-to-member function”,但没有找到任何内容。任何帮助或建议都会很棒。我觉得我很接近,但这只是语法问题。
最佳答案
恕我直言,.*
和 ->*
的运算符优先级已损坏。您需要将操作数括在括号中才能调用。
return (this->*MyFunc)(a);
否则,编译器认为你在做this->*(MyFunc(a))
,这显然是无效的。
有趣的是,(this->*MyFunc)
作为独立表达式也是无效的。它需要当场调用。
关于C++:指向结构中成员函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623534/