在 C++ 中创建字符串数组向量和 void 函数指针

create vector of array of string and void function pointer in c++

如何在 C++ 中创建字符串数组(2 个索引)和 void 函数指针的向量?

python中的这个程序:

a = [["foo",foofunc]["bar",barfunk]]

注意‌:这是一个数组,因为 python 是一种动态语言。

我试试这个:


std::vector <std::varient<std::string,int>*>

但这有一个错误。

注意:在此代码中我使用了字符串和整数,但我不知道 void 函数指针的类型。

我认为您正在寻找 pair<std::string, void (*)() 中的 vector,如下所示:


#include <iostream>
#include <utility>
#include <string>
#include <vector>
void foofunc()
{
    std::cout<<"foofunc called"<<std::endl;
    //do something here 
}
void barfunc()
{
    std::cout<<"barfunc called"<<std::endl;
    //do something here 
}
int main()
{
    //create a vector of pair of std::string and pointer to function with no parameter and void return type
    std::vector<std::pair<std::string, void (*)()>> a;
    
    //add elements into the vector
    a.push_back({"foo", &foofunc});
    a.push_back({"bar", &barfunc});
    
    //lets try calling the functions inside the vector of pairs
    a[0].second();//calls foofunc()
    
    a[1].second(); //calls barfunc()
    return 0;
}

上面程序的输出可见here.

您可以利用 std::function 如下:

#include <iostream>
#include <functional>


void foofunc( )
{
    // your code goes here
    std::clog << "Hi" << '\n';
}

int main( )
{
    std::function< void( ) > f_foofunc = foofunc;
    f_foofunc( ); // call it directly

    std::vector< std::pair< std::string, std::function<void( )> > > func_vec;

    func_vec.push_back( { "foo", &foofunc } );
    
    func_vec[0].second( ); // call it from the vector
}