假设我正在创建一个国际象棋程序。我有一个功能
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 函数用途广泛,代码中的许多不同位置都引用了它。这些引用中的每一个都必须更新它们的函数以包含它们不需要的参数是没有意义的。
如何将额外的参数传递给我通过指针调用的函数?