目前我有一个功能:
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
(如果我正确理解了它的用例)。
最佳答案
尝试:
template <typename ... Args>
void translate(std::string key, std::string& result, Args&& ... args)
{
// your code
}
以及您需要转发的任何地方,例如到函数
foo
:foo(std::forward<Args>(args)...)
我建议阅读更多有关variadic template和完美转发的信息。
关于c++ - 有什么办法可以将设置/数组设置为方法参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61175784/