我有一个看起来像这样的树遍历 API
treeTraverse(Tree *ptr, (void *) call_back(Tree *ptr));
此 API 遍历树并使用每个条目调用回调函数。我想遍历树并调用一个函数
myFunc(Tree *ptr, int a, int b)
对于树上的每个条目,但正如您在上面看到的,回调函数只接受一个参数,因此将 myFunc() 注册为回调函数将不起作用。我该如何解决这个问题。
重写 treeTraverse() API 以接受可变参数是不可行的,因为它是一个框架 API,如果我需要更改它,我必须让很多人对其进行审查。这不是我所期待的,因为我只需要实现一个非常小的功能。
另一种方法是将变量“a”和“b”设为全局变量,以便 myFunc 可以访问它。但这个解决方案看起来很丑陋。
有没有其他方法可以解决这个问题?