如何从地图调用函数?

时间:2016-02-18 15:34:24

标签: c++ function pointers dictionary

我想知道我怎么能(如果我可以的话)输出(调用)函数的功能。我想要1,UP输出。这是我导师的新任务。在现实生活中的示例中练习回调功能。 (我开始创造一个小游戏)。

#include <functional>
#include <iostream>
#include <string.h>
#include <map>

using namespace std;


void up (){

    cout<<"UP";
}

void down (){

    cout<<"DOWN";
}

void left (){

    cout<<"LEFT";
}
void right (){

    cout<<"RIGHT";
}


int main (){

   typedef map<int, void (*)()> mapaF;

    mapaF Kretnje;

    Kretnje.insert(pair<int,void (*)() >(1, up));
//    Kretnje.insert(pair<int, void (*)()>(2, down));
//    Kretnje.insert(pair<int, void (*)()>(3, left));
//    Kretnje.insert(pair<int, void (*)()>(4, right));

    for(auto a: Kretnje){
        cout<<"Kljuc: "<<a.first<<", Funkcija: "<<a.second<<endl;

    }
    //output 1, 1(?))
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以在其上使用相同的函数调用语法()

for (auto a : Kretnje)
    a.second(); //UP

请注意,调用该函数会返回void,因此您无法在cout链中调用它。

std::cout << a.first << a.second(); //error, a.second() is void