【发布时间】:2019-06-14 22:16:52
【问题描述】:
这个问题的背景围绕着硬类型的基因编程。
我想从一个函数返回一个函数指针,但这些函数指针指向具有不同返回类型的函数。在另一个堆栈溢出问题 (Function Pointers with Different Return Types C) 中,建议使用联合的返回类型,但我正在努力实现。
我对 C++ 还很陌生,所以请原谅我的无知。
#include <iostream>
#include <string>
float Add(float a, float b) { return a + b; }
bool IfElse(bool a) { if (a) { return true; } else { return false; }; }
union return_type
{
float(*ffptr)(float, float);
bool(*bfptr)(bool);
};
union fptr(std::string OPERATION) {
if (OPERATION == "Add") {
return_type.ffptr = Add;
} else if (OPERATION == "IfElse") {
return_type.bfptr = IfElse;
}
return return_type;
}
int main() {
std::cout << fptr("Add") << std::endl
return 0;
}
我希望(或者更愿意)这样打印函数 Add 的地址
【问题讨论】:
-
您使用了正确的标头和命名空间,因此您领先于很多人,无论是否是 C++ 新手。赞一个。
-
是“添加”运行时参数吗?
-
我不这么认为。我会说不,因为它被硬编码到 main.
-
你打算如何使用
fptr的结果? -
以上是最小的sn-p。在实际代码中,它存储在一个类中并用于定义计算树。