【问题标题】:Making an array of function pointers [duplicate]制作函数指针数组[重复]
【发布时间】:2025-11-23 21:50:01
【问题描述】:

我的问题是:我想编写一个创建数组函数指针的程序。我知道如何制作指向函数的指针,但不知道如何制作它们的数组。

这是我到目前为止所尝试的:

double add(double a, double b) { return a + b; }
double sub(double a, double b) { return a - b; }
double mult(double a, double b) { return a * b; }
double div(double a, double b) { return a/b; }

int main() {
    double(*Padd)(double a, double b);
    double(*Psub)(double a, double b);
    double(*Pmult)(double a, double b);
    double(*Pdiv)(double a, double b);

    Padd = &add;
    Psub = ⊂
    Pmult = &mult;
    Pdiv = ÷
} 

在我的代码中,我创建了这些指向数组中函数的指针,例如

double Tpointers[3];
Tpointers[0] = Padd;
Tpointers[1] = Psub;
Tpointers[2] = Pmult;
Tpointers[3] = Pdiv;

我该怎么做?

【问题讨论】:

  • 这个indicator board 应该做什么?您的问题需要更多解释。最好通过代码中的示例。
  • 什么是“指标板”?请使用正确的英文翻译。
  • 数组指针。
  • 查看std::function。但更大的问题是:你为什么要这样做?。你最终想达到什么目标?
  • 我认为您正在尝试创建函数指针数组,请查看 *.com/questions/5488608/… 它有答案

标签: c++ function-pointers


【解决方案1】:

只需声明一个新类型“Tpointers”,它表示一个指向函数的指针,该函数给出两个双精度并返回一个双精度。

您可以在代码中创建一个函数数组。

#include<iostream>

// The function pointer type!
typedef double (*Tpointers)(double, double);

double add(double a, double b) { return a + b; }
double sub(double a, double b) { return a - b; }
double mult(double a, double b) { return a * b; }
double div(double a, double b) { return a / b; }

int main() {
  // A functions pointers array .
  Tpointers fun_array[4];

  // Assign the values 
  fun_array[0] = &add;
  fun_array[1] = &sub;
  fun_array[2] = &mult;
  fun_array[3] = &div;

  // A little test
  std::cout << fun_array[2](3, 3) << " " << fun_array[3](3,3) << " " << fun_array[1](3,3)
        << std::endl;

  return 0;
}

在 c++ 中,您还可以创建函数指针的 std::vector ... 或“Tpointers”的 std 库中的任何容器。

【讨论】: