我想创建一个类来访问一系列类的成员函数。更详细地说,我有类 ControlChaos 声明如下:
#define CALL_MEMBER_FN(object, ptrToMember) ((object)->*(ptrToMember))
typedef double (MultiMaps::*mapsGetPtr)();
typedef void (MultiMaps::*mapsSetPtr)(double para);
class ControlChaos
{
public:
ControlChaos(MultiMaps* _map,
mat orbitPoints,
colvec initCond,
mapsGetPtr getPtr,
mapsSetPtr setPtr,
double deltaMax,
double epsilonNeighborhood,
int controlIterations,
int maxIterations);
/* Other stuff here. */
};
具有类型为 mapsGetPtr 和 mapsSetPtr 等的受保护成员变量。在实现中,我使用
CALL_MEMBER_FN(map,setPtr)(someParameter);
调用我在 ControlChaos 的构造函数中使用函数指针指定的函数。我要访问的成员函数是从 MultiMaps 派生的类的成员。这段代码本身可以很好地编译。当我尝试使用指向从 MultiMaps 派生的类中的成员函数的函数指针来实例化 ControlChaos 对象时,编译器会抱怨我给了它错误的参数类型。
此外,这篇文章似乎暗示静态演员可以完成这项工作,但我还没有发现这是真的。
关于如何解决这个问题的任何想法?