我需要一个数组来保存不同类的成员函数指针。如何定义数组?
代码应如下所示:
arr[0] = &CMyClass::FuncX;
arr[1] = &CYourClass::FuncY;
arr[2] = &CHerClass::FuncZ;
我尝试了void*
,但它不起作用。
最佳答案
你不能;它们都是不同的类型,并且数组是同质的。
无论参数是什么或返回值是什么,都有一个隐式的 this
,它对于类类型来说是唯一的。类成员指针的类型是:
return_value (class_type::*)(parameters);
正如您所看到的,因为它们属于不同的类,所以它们始终是不同的类型。即使它是同一个类,return_value
和 parameters
也必须一致才能创建数组,否则您仍然会拥有不同的类型。
更大的前景是什么? Boost.Bind与 Boost.Function我想到了。另外,虚函数可以解决您的问题。
关于c++ - C++ 中什么类型可以保存不同类的成员函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467384/