我正在学习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;
}
答案 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)
您需要手动调用该功能。证明:
更多考虑使用std::function
。例如:
#include <functional>
void printTheNumbers(int a, int b, std::function<void()> function){
function();
}
在大多数情况下,std :: function足够且更具可读性。