想象一个函数的func1
参数是一个函数f
及其参数。假设有两个函数func2
,func3
应该func1
使用以下定义传递给它们:
bool func2(int a, int b, float c){
// does something with arguments and returns the boolean result
}
bool func3(int a, int b, float c, float d){
// does something with arguments and returns the boolean result
}
我想知道应该如何定义func1
它才能与这两个功能兼容。当然有一个解决方法,那就是将一个虚拟参数传递给它,func2
但这不是一个好的解决方案。我已经阅读了这篇文章,但它似乎不是一个兼容的解决方案。有任何想法吗?
编辑:
该函数是一个C ++模板,它等效于python函数,例如:
def func1(f, int a, int b, *args):
if f(a, b, *args):
# does something
可变参数模板可以为您提供帮助。最简单的版本:
template<class Fn, typename... Ts>
void func1(Fn fn, int a, int b, Ts... args) {
if (fn(a, b, args...))
...
}
func1(func2, 1, 2, 3);
func1(func3, 1, 2, 3, 4);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句