слишком мало аргументов для шаблона класса "std :: pair": передача пары std в качестве аргументов в функцию varidiac - PullRequest
0 голосов
/ 04 мая 2018

Я должен передать std::pair из std::string в переменную функцию. std::pair показывает ошибку too few arguments for class template "std::pair" при попытке доступа к std::pair с помощью макроса va_arg.

#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;
}

Чего здесь не хватает,

1 Ответ

0 голосов
/ 04 мая 2018

va_arg - это макрос, а такой символ, как ',', может привести к сбою разбора макроса

Таким образом, решение typedef the pair<string,string>:

    typedef pair<string, string> StrStrPair;
    StrStrPair bulkData;
    bulkData = va_arg(args, StrStrPair);
...