如何调用函数指针数组中的函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (254)

我有一个数组,其中包含函数指针,这些函数指向我的GameBoard类中的函数。我该如何调用其中一个功能?

class myClass {
    int plusOne(int val) {return val + 1;}
    int minusOne(int val) {return val - 1;}
    int keepTheSame(int val) {return val;}

    int (myClass::*functions[3])(int val) {&myClass::plusOne, &myClass::minusOne, &myClass::keepTheSame};

    // Get coordinates of all positions that flip when placing disc at x,y
    vector<pair<int, int>> getFlipDiscs(pair<int, int> moveCoord, int color) {
        int a = (*functions[0])(2); // error: indirection requires pointer operand
    }
};

我在互联网上查看了成员函数指针和函数指针数组,并发现了很多信息,但我无法在工作解决方案中将它们组合在一起。

提问于
用户回答回答于

你的函数指针实际上是指向成员函数的指针。要调用其中任何一个,你需要提供要调用它们的类的对象。我认为这应该有效:

(this->*(functions[0]))(2);
用户回答回答于
#include <stdio.h>

int plusOne(int val) {return val + 1;}
int minusOne(int val) {return val - 1;}
int keepTheSame(int val) {return val;}

int (*functions[3])(int val) {plusOne, minusOne, keepTheSame};

int main()
{
    int a = (functions[1])(2); // no error
    printf("%d\n", a);
}

所属标签

可能回答问题的人

  • uncle_light

    5 粉丝518 提问6 回答
  • 优惠活动秘书

    0 粉丝2 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • 天使的炫翼

    17 粉丝531 提问5 回答

扫码关注云+社区

领取腾讯云代金券