您可以制作带有参数的函数向量吗?

MrW*_*eee 2 c++ vector

是否可以创建一个具有推后功能的向量?
我试过使用指针做一些事情,但是它只能用于没有参数的函数。

例如,

#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;
}
Run Code Online (Sandbox Code Playgroud)

那行得通,但不是我需要的。
正确的版本应该是带有参数的函数:void printInt(int a)您可以使用vector 4或的不同值来调用它。-1functionStack

如果向量中的函数具有不同的参数,可能会更复杂,因此让我们假设每个函数具有相同的类型和数量的参数。

acr*_*075 5

这个:

void (*)()
Run Code Online (Sandbox Code Playgroud)

不带参数的函数指针。因此,将其更改为采用所需的参数。

void (*)(int)
Run Code Online (Sandbox Code Playgroud)

像这样:

void printInt(int x)
{
    cout << "function works!" << x << endl;
}

int main()
{
    vector<void (*)(int)> functionStack;

    functionStack.push_back(printInt);

    (*functionStack[0])(123);
}
Run Code Online (Sandbox Code Playgroud)

正确地说,函数必须具有相同的类型和数量的参数,才能使此函数有效。

  • 通常情况下,我是抱怨`std :: function`的人,不需要... +1 (2认同)