函数指针成员变量

问题描述

我在double()(double)类型的类中有一个成员变量,但是有些要存储的函数id具有第二个默认参数,因此它们是double()(double ,double),所以我无法将其存储在当前的成员变量中。

是否可以将我的成员变量设置为double()(double,double),以便它还可以存储()(double)?有什么其他方法可以实现我想要的吗?还是在使用2个参数而不是1个的情况下需要2个不同的变量?

解决方法

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

如果一次只需要其中之一,则可以使用联合节省结构中的空间。

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);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...