我正在为一个C++应用程序编写VxWorks。由于VxWorks是基于C的,将函数指针作为参数的函数与C++的成员函数指针不兼容。
我有一个类(SomeClass),它用30+成员函数实例化了几次,希望能够传递给像taskSpawn这样的函数。我知道有两种方法可以做到这一点,但我并不特别喜欢这两种传统的解决方案:
我非常非常不喜欢这两种解决方案。这个问题有一个干净的简单的解决方案吗?
发布于 2013-04-15 02:34:06
第一个选项是使用一个函数指针数组。
static void (*functionArray[30])(SomeClass *) = {
Function1,
Function2,
Function3,
Function4
//
};
static void CallFunction(SomeClass *objectToCallFunctionOn, int functionToCall) {
functionArray[functionToCall](objectToCallFunctionOn);
}另一种选择是对非类型模板参数执行相同的操作。但我认为第一种选择公平地解决了这个问题。
https://stackoverflow.com/questions/16006743
复制相似问题