繁体   English   中英

如何声明函数数组?

[英]How do I declare an array of functions?

这是CMD提示计算的一部分:

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];
}}

丑陋,但是,嘿,这就是你要的...

float (*arr[])(float) = { cosf, sinf,...};
...
float result = arr[i]();

您似乎来自更“灵活”的语言,顺便说一句。

无论如何,您的代码有几个错误:

首先,最重要的是:

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

尽管(仅在某些情况下)该表达式有效,但它通常表示对比较运算符有误解。

希望这可以帮助!

以下内容与您要求的内容基本相似,但使用的是现代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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM