gpt4 book ai didi

c++ - 将具有不同数量参数的函数传递给另一个函数 C++

转载 作者:行者123 更新时间:2023-11-30 01:01:38 25 4
gpt4 key购买 nike

想象一个函数func1,它的参数是一个函数f 及其参数。假设有两个函数 func2func3 应该传递给 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 但这不是一个好的解决方案。我读过this post但它似乎不是一个兼容的解决方案。有什么想法吗?

编辑:

此函数是一个 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);

关于c++ - 将具有不同数量参数的函数传递给另一个函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com