传参数包重复函数
Pass parameter pack to function repeatedly
我需要在一个循环中重复传递一个参数包给一个函数,像这样:
void printString(string str)
{
cout << "The string is: \"" << str << "\"" << endl;
}
template <typename FunctionType, typename ...Args>
void RunWithArgs(FunctionType functionToCall, Args...args)
{
for (int i = 0; i < 3; i++)
functionToCall(forward <Args>(args)...);
}
int main()
{
string arg("something");
RunWithArgs (printString, arg);
return 0;
}
编译器提示我正在使用移出的对象,果然,字符串只在第一次传递:
The string is: "something"
The string is: ""
The string is: ""
如何在循环的每次迭代中将参数包传递给函数?
这一行:
functionToCall(forward <Args>(args)...);
您正在转发论点,在本例中,它移动了它。如果你不想移动,而是想复制,那就这样做:
functionToCall(args...);
我需要在一个循环中重复传递一个参数包给一个函数,像这样:
void printString(string str)
{
cout << "The string is: \"" << str << "\"" << endl;
}
template <typename FunctionType, typename ...Args>
void RunWithArgs(FunctionType functionToCall, Args...args)
{
for (int i = 0; i < 3; i++)
functionToCall(forward <Args>(args)...);
}
int main()
{
string arg("something");
RunWithArgs (printString, arg);
return 0;
}
编译器提示我正在使用移出的对象,果然,字符串只在第一次传递:
The string is: "something"
The string is: ""
The string is: ""
如何在循环的每次迭代中将参数包传递给函数?
这一行:
functionToCall(forward <Args>(args)...);
您正在转发论点,在本例中,它移动了它。如果你不想移动,而是想复制,那就这样做:
functionToCall(args...);