c++ - 你能用参数制作一个函数向量吗?
问题描述
是否可以创建一个功能被推回的向量?
我试过用指针做一些事情,但它只适用于没有参数的函数。
例如,
#include <iostream>
#include <vector>
using namespace std;
void printInt();
int main()
{
vector<void (*)()> functionStack;
functionStack.push_back(printInt);
(*functionStack[0])();
}
void printInt()
{
cout << "function works!" << 123 << endl;
}
那行得通,但不是我需要的。
正确的版本是一个有参数的函数:void printInt(int a)
你可以用不同的值来调用它,比如4
or-1
但来自 vector functionStack
。
如果向量中的函数具有不同的参数,则可能会更复杂,因此我们假设每个函数都具有相同的类型和数量的参数。
解决方案
这个:
void (*)()
是一个不带参数的函数指针。因此,将其更改为采用所需的参数。
void (*)(int)
像这样:
void printInt(int x)
{
cout << "function works!" << x << endl;
}
int main()
{
vector<void (*)(int)> functionStack;
functionStack.push_back(printInt);
(*functionStack[0])(123);
}
您说得对,函数必须具有相同类型和数量的参数才能有效。
推荐阅读
- google-cloud-dataflow - 如何取消/取消设置 DoFn 定义的计时器?
- r - 如何在 R Shiny 中使用 downloadHandler 导出 HTML 输出?
- c# - 在我的基础存储库类的构造函数中配置 DBContext
- drupal - Drupal 8 中缓存重建后缺少路由
- angular - Angular 和 Docker:无法从主机访问应用程序
- javascript - 如何在 HTML 标签中使用 Javascript 变量?
- android - 如何修复 WebView“阻止弹出窗口”?
- python - 如何使组合幂函数更快?
- spring - 当我尝试使用 gradle 中的 uploadArchives 将工件上传到 nexus 时
- c++ - C++17 std::from_chars 和 std::to_chars 的用途?