Присваивание отбрасывает спецификатор const из целевого типа указателя - при попытке получить значение
Couchbase использует модель, основанную на событиях. Поэтому, чтобы получить значения, мне нужно настроить обработчик обратного вызова, а затем выдать запрос get в базу данных. Это делается так:
[... some stuff happens]
/* set up a callback for our get requests */
lcb_set_get_callback(instance, get_callback);
в get_callback
у меня есть cookie
поставить свои ценности в. Поэтому я анализирую возвращаемый объект и помещаю его в файл cookie с помощью:
json_t *object;
[... some error handling and parsing]
/*Put the json_object into the cookie*/
lcb_set_cookie(instance, object);
Когда я хочу получить его, я должен использовать lcb_get_cookie
Страница man, которая возвращает пустой указатель, но говорит: "lcb_get_cookie() возвращает значение, установленное с помощью lcb_set_cookie(), или NULL, если lcb_set_cookie () не устанавливает никакого значения". Поэтому я хочу сделать что-то вроде:
/* Retrieve the ad out of the cookie*/
ad_json = lcb_get_cookie(instance);
Когда я пытаюсь использовать его таким образом, я получаю предупреждение:warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
, Так что я в замешательстве. Как я могу получить значение, которое я положил в куки?
Изменить: я забыл упомянуть, что мне нужно для дальнейшей обработки данных и хочу внести в них изменения.
1 ответ
Скажите компилятору, что вы обещаете не менять этот cookie:
json_t const * object = lcb_get_cookie(instance);
Но если вам нужно изменить его, вы, возможно, можете привести его, потому что руководство говорит, что "...libcouchbase не будет ничего делать со значением".:
json_t * object = (json_t *)lcb_get_cookie(instance);
Но, возможно, более безопасной альтернативой будет копирование содержимого в новый файл cookie, внесение изменений и его установка заново?
Я не знаю точное расположение json_t
Если он не содержит никаких внутренних указателей, простое назначение может помочь:
json_t const * old = lcb_get_cookie(instance);
json_t * new = /* init pointer with your new object */;
*new = *old; /* Copy data */