Я использую xmlrpc-c 1.33.9, скомпилированный с libc++ и С++ 11 на OSX Mavericks.
std::vector<xmlrpc_c::value> parameters;
parameters.push_back(ValueInt(x));
parameters.push_back(ValueInt(y));
int paramsize = parameters.size();
xmlrpc_c::paramList params;
for(int i; i < paramsize; i++){
params.addc(parameters.at(i));
//verifyEnd will throw an error without the following line
std::cout << parameters.at(i).type() << std::endl;
}
params.verifyEnd(paramsize);
Когда вы перемещаете xmlrpc_c :: value_int из моего вектора параметров в xmlrpc_c :: paramList, значения, похоже, на самом деле не заканчиваются там, если я не сделаю следующее в моем цикле for:
std::cout << parameters.at(i).type() << std::endl;
Именно поэтому я и делаю
int paramsize = parameters.size();
Потому что я получаю подобные ошибки с другим xmlrpc_c :: value_type без него. Без этих "обходных решений" verifyEnd (paramsize) будет вызывать ошибки, а объект paramList заканчивается пустым.
Каков правильный способ создания объектов xmlrpc_c :: paramList? Я понимаю, что либо я столкнулся с ошибкой в xmlrpc-c, либо копирую эти значения неправильно.
Я должен указать, что когда я использовал версию xmlrpc-c, которая поставляется с Homebrew на Mavericks (1.33.0), и не используйте "-std = С++ 11 -std lib = libc++" для скомпилируйте мой проект, все работает без необходимости этих странных "обходных решений".
Проблема была здесь
for(int i; i < paramsize; i++)
"i" нужно было инициализировать (Doh!)
for(int i=0; i < paramsize; i++) ...
Не вызывает ошибок.