【发布时间】:2020-11-16 11:46:28
【问题描述】:
在 Python 中,可以存储具有不同数量参数的函数指针并将参数存储在列表中,然后解包列表并调用该函数,如下所示:
def Func(x1, x2):
return x1+x2
ArgList = [1.2, 3.22]
MyClass.Store(Func)
MyClass.FuncPtr(*ArgList)
在 c++ 中可以做类似的事情吗?
例如,将具有可变数量输入和值的函数存储在std::vector 中并通过该向量调用函数指针?
我不想将参数列表定义为向量。
【问题讨论】:
-
不像在 Python 中那样,在 Python 中,它是一个列表和一个字典,它们是实际的参数。你可以创建一个可变参数对象,但需要大量的脚手架。
-
在 C++17 中,您可以执行类似 this 的操作。但我不确定这就是你想要的。
-
I don’t want to define argument list as vector.- 为什么不呢? -
@Hesam,
std::apply本身适用于任何可以使用给定数量的参数调用的东西,但std::function应该在编译时知道参数的数量。 -
Python 允许您在调用函数时不匹配参数和参数。默认情况下,C++ 会更早地阻止你,而且要复制 Python 的灵活性非常困难。如果我使用您的 API,我不希望灵活性出错
标签: c++ class c++11 templates variadic-templates