有什么办法可以将设置/数组设置为方法参数吗?

时间:2020-04-12 17:53:26

标签: c++

当前我有一个功能:

void translate(std::string key, std::string& result, ...)
{
    char buffer[1024];
    va_list args;
    va_start(args, result);
    vsnprintf (buffer, sizeof(buffer), (loadedTranslations.find(key) != loadedTranslations.end() ? loadedTranslations[key] : "unknown").c_str(), args);
    va_end(args);

    result = buffer;

}

我在AMX插件中获取了一些数据,需要将它们传递给此函数。有什么办法可以做到这一点?在JavaScript中,我可以执行类似translate(a, b, ...rest)的操作,并且可以正常工作。有一些方法可以在C ++中实现相同的结果吗?问题在于数据不是一种类型:可以有整数,浮点数和字符串。因此,不可能使用std::forward(如果我正确理解了它的用例)。

1 个答案:

答案 0 :(得分:1)

尝试:

template <typename ... Args>
void translate(std::string key, std::string& result, Args&& ... args)
{
    // your code
}

以及您需要转发的任何地方,例如。功能foofoo(std::forward<Args>(args)...)

我建议您阅读有关variadic template和完美转发的更多信息。