C++:指向结构中成员函数的指针

标签 c++ function pointers struct member

这是我之前帖子的后续问题: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/

相关文章:

swift - 在应用内购买后启用被阻止的行。编码问题

function - 如何“检查”一个函数是否确实给出了随机结果?

c++ - 删除指向结构的指针

与当前对象相关的 C++ 指针和地址说明

C++ 将指针从一种类型转换为另一种类型

c++ - OpenMP 中的 "static"和 "dynamic"调度有什么区别?

c++ - 在处理特定 HWND 的消息时等待 HANDLE

c++ - CEDel.exe : 0xC0000005: Access violation writing location 0x002e0364 中 0x03f7111c 的第一次机会异常

swift - 在 swift 中传递函数与闭包 "weak self"作为参数

c - 是否可以将有符号整数存储在整数指针 (int *) 中?