c++ - C++ 中什么类型可以保存不同类的成员函数指针?

标签 c++ function-pointers pointer-to-member

我需要一个数组来保存不同类的成员函数指针。如何定义数组?

代码应如下所示:

arr[0] = &CMyClass::FuncX;
arr[1] = &CYourClass::FuncY;
arr[2] = &CHerClass::FuncZ;

我尝试了void*,但它不起作用。

最佳答案

你不能;它们都是不同的类型,并且数组是同质的。

无论参数是什么或返回值是什么,都有一个隐式的 this ,它对于类类型来说是唯一的。类成员指针的类型是:

return_value (class_type::*)(parameters);

正如您所看到的,因为它们属于不同的类,所以它们始终是不同的类型。即使它是同一个类,return_valueparameters 也必须一致才能创建数组,否则您仍然会拥有不同的类型。

更大的前景是什么? Boost.BindBoost.Function我想到了。另外,虚函数可以解决您的问题。

关于c++ - C++ 中什么类型可以保存不同类的成员函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467384/

相关文章:

c++ - "unpacking"调用匹配函数指针的元组

c++ - 我可以合法地将成员函数指针转换为函数指针吗?

c++ - 如何获取函数中定义的局部类的成员函数地址(C++)

C++ 如何创建链接列表的拷贝作为类对象?

c++ - 在链表中插入 'n' 节点并打印其数据(C++)

c++ - 在一个c++项目中(文件是moSTLy.cpp),如果一个文件只包含c代码,它应该命名为.c还是.cpp?

c++ - 传递模板函数。作为一个功能。 ptr 到一个重载的函数。 - 有没有办法编译这段代码?

c++ - 使用 <set> 运算符调用 void 函数时出错

c - c中exp函数的反函数指针

c++ - 指向成员函数的函数指针