函数指针成员变量

function pointer member variable

我在 class 中有一个类型为 double ()(double) 的成员变量,但是有一些函数 id 喜欢存储,它们有第二个默认参数,所以它们是 double ()(double, double) 所以我不能将它存储在我当前的成员变量中。

我可以将我的成员变量设为双精度 ()(double, double) 以便它也可以存储 ()(double) 吗?有什么不同的方法可以实现我想要的吗?或者在使用 2 个参数与 1 个参数的情况下,我是否需要 2 个不同的变量?

你需要两个变量。调用中的参数数量必须与函数指针变量中的参数数量相匹配,因此不能对不同数量的参数使用相同的变量。

如果一次只需要其中一个,可以在结构中使用联合保存space。

double somefunc(double);
double otherfunc(double, double);

struct mystruct {
    union {
        double(*onearg)(double);
        double(*twoarg)(double, double);
    } func
    // other members
};

mystruct obj;

obj.func.onearg = somefunc;
double foo = obj.func.onearg(1.2);
obj.func.twoarg = otherfunc;
double bar = obj.func.twoarg(2.5, 11.1);