这是CMD Prompt Calc的一部分:
1)显示0 - 9
的选项2)用户输入与他们想要的功能匹配的号码
而不是10:case i: //do stuff here
我可以有一个包含这些函数的数组;
functionArrayName = [(float cosx(float _cx);), (float sinx(float _sx);) ... etc ]
然后有一个for循环:
for(int i = 0; i < 10; ++i){
if(i = userInput){
//call the function in functionArrayName[i];
}}
答案 0 :(得分:3)
丑陋,但是,嘿,这就是你要求的......
float (*arr[])(float) = { cosf, sinf,...};
...
float result = arr[i]();
答案 1 :(得分:1)
您似乎来自更灵活的&#34;语言,BTW。
无论如何,您的代码有几个错误:
首先,最重要的是:
functionArrayName = [(float cosx(float _cx);), (float sinx(float _sx);) ... etc ]
实际上应该是:
#include <array>
#include <functional>
// ...
std::array<std::function<float(float)>> functionArrayName;
请注意,此std::array
只能保存返回float
的函数(类似)对象并获取单个float
参数。
...其次
if(user = input) {
应该(在大多数情况下)是:
if(user == input) {
虽然(仅在某些情况下)表达式有效,但它通常表示对比较运算符的误解。
希望这有帮助!
答案 2 :(得分:1)
以下内容与您要求的内容类似,但使用的是现代C ++
#include <functional>
extern float cosx(float);
extern float sinx(float);
// ... add more
std::function<float(float)> functionArray[] = {cosx, sinx, /*... add more */};
int main() {
int userInput = 0;
float x = 3.14159/2;
float y = functionArray[userInput](x);
}