class 模板 "std::pair" 的参数太少:将标准对作为变量函数中的参数传递
too few arguments for class template "std::pair" : Passing std pair as arguments in varidiac function
我必须将 std::string
中的 std::pair
传递给可变参数函数。 std::pair
在尝试使用 va_arg
宏访问 std::pair
时显示错误 too few arguments for class template "std::pair"
。
#include <stdarg.h>
#include <tuple>
#include <string>
using std::pair;
using std::string;
bool EncodeJSonData(pair<string,string> inbulkData ...)
{
va_list args;
va_start(args, inbulkData);
int count = 5;
while(count--)
{
pair<string,string> bulkData;
bulkData = va_arg(args, pair<string,string>); //here is the error
}
va_end(args);
return true;
}
这里少了什么,
va_arg
是一个宏,','
这样的字符可能会导致宏解析失败
所以解决办法是typedef pair<string,string>
:
typedef pair<string, string> StrStrPair;
StrStrPair bulkData;
bulkData = va_arg(args, StrStrPair);
我必须将 std::string
中的 std::pair
传递给可变参数函数。 std::pair
在尝试使用 va_arg
宏访问 std::pair
时显示错误 too few arguments for class template "std::pair"
。
#include <stdarg.h>
#include <tuple>
#include <string>
using std::pair;
using std::string;
bool EncodeJSonData(pair<string,string> inbulkData ...)
{
va_list args;
va_start(args, inbulkData);
int count = 5;
while(count--)
{
pair<string,string> bulkData;
bulkData = va_arg(args, pair<string,string>); //here is the error
}
va_end(args);
return true;
}
这里少了什么,
va_arg
是一个宏,','
这样的字符可能会导致宏解析失败
所以解决办法是typedef pair<string,string>
:
typedef pair<string, string> StrStrPair;
StrStrPair bulkData;
bulkData = va_arg(args, StrStrPair);