函数指针说明

时间:2015-04-17 21:18:06

标签: c++ function pointers

我正在学习C ++,只是在玩函数指针。

我有这个非常简单的程序,但是在调用时我没有得到任何输出。你介意解释原因吗?我认为这是因为在printTheNumbers内,我从未调用函数本身,我只是引用它?

void sayHello()
{
    cout << "hello there, I was accessed through another function\n";
}

void accessFunctionThroughPointer(int a, int b, void(*function)())
{

}

int main(int argc, const char * argv[])
{
    printTheNumbers(2, 3, sayHello);

    return 0;
}

3 个答案:

答案 0 :(得分:2)

您将sayHello函数传递给printTheNumbers,但您从不调用传入的函数。

答案 1 :(得分:2)

你的功能没有做任何事情:

void printTheNumbers(int a, int b, void (*function)()){
    // there is no body here    
}

您需要实际调用传入的函数指针:

void printTheNumbers(int a, int b, void (*function)()){
    function();
}

答案 2 :(得分:0)

您需要手动调用该功能。证明:

Code snippet

更多考虑使用std::function。例如:

#include <functional>

void printTheNumbers(int a, int b, std::function<void()> function){ 
    function();
}

在大多数情况下,std :: function足够且更具可读性。