首页 > 解决方案 > 你能用参数制作一个函数向量吗?

问题描述

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

例如,

#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)你可以用不同的值来调用它,比如4or-1但来自 vector functionStack

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

标签: c++vector

解决方案


这个:

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

您说得对,函数必须具有相同类型和数量的参数才能有效。


推荐阅读