微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

函数指针成员变量

如何解决函数指针成员变量

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。