首页 > 解决方案 > 将 C++ 数组解包为函数调用的参数

问题描述

我正在实现一个能够理解 Godot 的 RPC 请求的库。

根据 RPC 请求,我创建了一个任意大小的参数数组。参数都是相同的类型,Variant. 每个都Variant包含一个type枚举和强制转换重载以返回正确的类型,无论是 anint还是 aconst char*等。

现在,我想让库接受函数点或std::function实例等的注册。库应该能够将此数组解包Variant*为已注册函数的参数。

IE

std::function<void(int, float, const char*)> foo;


Variant* args = ...;
size_t numArgs = ...;

/**
 * For example,
 * if (args[0].type == VAR_INT) {
 *     int arg_int = (int)args[0];
 * }
 * would be valid.
 */

foo(args...);

有没有办法让这成为可能?

标签: c++c++11

解决方案


推荐阅读