我想知道标准 C++ 中是否有一种方法(似乎不支持这种方法,但也许我没有仔细看)来声明指向具有相同签名的任何类成员函数的指针。例如,X 和 Y 具有具有相同签名的 echoX 和 echoY 方法
\n\nclass X{\n\xc2\xa0 int val;\npublic:\n\xc2\xa0int echoX(int v)\xc2\xa0 {\n\xc2\xa0val = v;\n\xc2\xa0return v; }\n\xc2\xa0 \xc2\xa0int getValue() const { return val; }\n};\n\nclass Y{\n\n\xc2\xa0 \xc2\xa0int val;\n\xc2\xa0 \xc2\xa0public:\n\xc2\xa0 \xc2\xa0int echoY(int v)\xc2\xa0 {\n\xc2\xa0 \xc2\xa0val = v;\n\xc2\xa0 \xc2\xa0return v;\n\xc2\xa0 \xc2\xa0}\n\xc2\xa0 \xc2\xa0int getValue() const { return val; }\n};\nRun Code Online (Sandbox Code Playgroud)\n\n一些 C++ 实现通过扩展允许此功能(例如,VCL 使用关键字__closure)。
typedef int (__closure *IntFunPtr)(int);\nRun Code Online (Sandbox Code Playgroud)\n\n现在,编写一个能够调用 或 的函数很X::echoX简单Y::echoY
void CallObjectMethod(IntFunPtr fPtr, int val){\n\n fPtr(val);//this can call any member …Run Code Online (Sandbox Code Playgroud)