JsonCpp неоднозначная перегрузка только в Windows

Мне нужно прочитать файл json с библиотекой jsoncpp.

У меня есть этот файл:

{"one":false,"two":[{"id":"first"},{"id":"second"}],"three":550}

Если мне нужно прочитать только первый идентификатор элемента «two», я использую:

std::string contents; //Contain the file
Json::Value root;
Json::Reader reader;
reader.parse(contents, root, false);
std::string aux = root["two"][0]["id"].asString();

Он отлично работает в Linux, но когда я пробую это в Windows, у меня появляется эта ошибка:

error: ambiguous overload for 'operator[]' in 'root.Json::Value::operator[](((const char*)"two"))[0]'

Почему это происходит и как я могу это исправить? Благодарю.

Решено: есть два operator[]один с int в качестве параметра и других с const char в качестве параметра, и компилятор не знает, кого использовать в Windows, но да, в Linux. Теперь я использую [0u] вместо [0] чтобы указать число в качестве параметра, и он работает нормально.

5

Решение

Это сводило меня с ума, пока я не наткнулся на этот вопрос, я загадочно понял это:
Просто приведите его к Json :: Uint (по какой-то причине) или используйте ‘u’:

MapEvent::MapEvent(Json::Value& val)
{
operator_enum = val.get(0u, "").asString();
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector