回调函数如何设置自定义参数,求比较好的方法
回调函数怎么设置自定义参数,求比较好的方法!
提供了一个回调函数,但是我想让用户可以传递自定义参数给回调函数,怎么弄 想了半天没想出来
------解决方案--------------------
什么样的自定义参数??
干脆直接void *
然后用户传进来一个指针,自己去处理吧.
------解决方案--------------------
这种问题通常有一种解决办法:定义一个类作为参数的基类,而传递给回调函数的参数都继承该基类,就是说参数的类型是该基类的派生类,只有满足这个条件,用户就可以自己定义回调函数的参数类型。
需要注意的是,在定义参数基类的时候可以设定一些虚函数(或者纯虚函数),用作接口函数。比如在基类中定义了一个COMPARE这样的纯虚函数,用来比较两个参数的大小。现在,你就可以定义一个复数类继承该基类,同时实现COMPARE这个函数即可,在回调函数中,你就可以使用COMPARE这样的函数了。
后面不管传入自己定义的何种类型的参数,由于都继承了上面说的那个基类,所以就都必须实现COMPARE,那么在回调函数中使用COMPARE函数时,总是不会有问题。
仅供参考。
------解决方案--------------------
------解决方案--------------------
回调函数,我的理解是钩子函数,是你的代码执行到指定地方后,打开了一个回调入口,传递参数出去的同时,可以让你的上层应用写一些flag在其中。这些回调函数中的flag并不影响你的代码。而回调函数中传入的参数是你指定的。是从你底层的代码中给上层用的。所以,我认为“但是我想让用户可以传递自定义参数给回调函数”这句的理解是错误的。你的理解方向反了。
提供了一个回调函数,但是我想让用户可以传递自定义参数给回调函数,怎么弄 想了半天没想出来
------解决方案--------------------
什么样的自定义参数??
干脆直接void *
然后用户传进来一个指针,自己去处理吧.
------解决方案--------------------
这种问题通常有一种解决办法:定义一个类作为参数的基类,而传递给回调函数的参数都继承该基类,就是说参数的类型是该基类的派生类,只有满足这个条件,用户就可以自己定义回调函数的参数类型。
需要注意的是,在定义参数基类的时候可以设定一些虚函数(或者纯虚函数),用作接口函数。比如在基类中定义了一个COMPARE这样的纯虚函数,用来比较两个参数的大小。现在,你就可以定义一个复数类继承该基类,同时实现COMPARE这个函数即可,在回调函数中,你就可以使用COMPARE这样的函数了。
后面不管传入自己定义的何种类型的参数,由于都继承了上面说的那个基类,所以就都必须实现COMPARE,那么在回调函数中使用COMPARE函数时,总是不会有问题。
仅供参考。
------解决方案--------------------
------解决方案--------------------
回调函数,我的理解是钩子函数,是你的代码执行到指定地方后,打开了一个回调入口,传递参数出去的同时,可以让你的上层应用写一些flag在其中。这些回调函数中的flag并不影响你的代码。而回调函数中传入的参数是你指定的。是从你底层的代码中给上层用的。所以,我认为“但是我想让用户可以传递自定义参数给回调函数”这句的理解是错误的。你的理解方向反了。