首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VxWorks中的成员函数指针

VxWorks中的成员函数指针
EN

Stack Overflow用户
提问于 2013-04-15 02:21:20
回答 1查看 872关注 0票数 1

我正在为一个C++应用程序编写VxWorks。由于VxWorks是基于C的,将函数指针作为参数的函数与C++的成员函数指针不兼容。

我有一个类(SomeClass),它用30+成员函数实例化了几次,希望能够传递给像taskSpawn这样的函数。我知道有两种方法可以做到这一点,但我并不特别喜欢这两种传统的解决方案:

  1. 使用静态函数调用特定对象上的C函数指针: 静态空洞CallFunction1(SomeClass *objectToCallFunction1On);静态空洞CallFunction2(SomeClass *objectToCallFunction2On);静态void CallFunction30(SomeClass *objectToCallFunction30On);voidFunction1();voidFunction2();.空洞Function30();
  2. 使用整数或枚举类型指定要调用特定对象的函数: 静态void CallFunction(SomeClass *objectToCallFunctionOn,int functionToCall);void Function1();void Function2();空洞Function30();

我非常非常不喜欢这两种解决方案。这个问题有一个干净的简单的解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-15 02:34:06

第一个选项是使用一个函数指针数组。

代码语言:javascript
复制
static void (*functionArray[30])(SomeClass *) = {
    Function1,
    Function2,
    Function3,
    Function4
    //
};

static void CallFunction(SomeClass *objectToCallFunctionOn, int functionToCall) {
   functionArray[functionToCall](objectToCallFunctionOn);
}

另一种选择是对非类型模板参数执行相同的操作。但我认为第一种选择公平地解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16006743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档