Проблемы с xmlrpc-c при добавлении значений из std :: vector в xmlrpc_c :: paramList

0

Я использую 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++" для скомпилируйте мой проект, все работает без необходимости этих странных "обходных решений".

  • 0
    Оглядываясь назад, я смотрел не на ту часть проблемы. Со всем странным поведением, которое я видел, я полагаю, именно поэтому они называют это «неопределенным поведением».
Теги:
c++11
vector
libc++
xml-rpc

1 ответ

0
Лучший ответ

Проблема была здесь

for(int i; i < paramsize; i++)

"i" нужно было инициализировать (Doh!)

for(int i=0; i < paramsize; i++) ...

Не вызывает ошибок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню