void foreachMove( void (*action)(chess_move*), chess_game* game);
该函数将在每个有效移动上调用函数指针操作。这很好,但如果我需要向操作函数传递更多参数怎么办?例如:
chess_move getNextMove(chess_game* game, int depth){
//for each valid move, determine how good the move is
foreachMove(moveHandler, game);
}
void moveHandler(chess_move* move){
//uh oh, now I need the variables "game" and "depth" from the above function
}
重新定义函数指针并不是最佳解决方案。foreachMove函数非常通用,代码中的许多不同位置都引用它。每个引用都需要更新其函数以包含它们不需要的参数是没有意义的。
我如何通过指针调用函数并传递额外的参数?