赋值从指针目标类型中丢弃'const'限定符 - 尝试检索值时

时间:2013-10-03 11:49:47

标签: c couchbase

Couchbase使用基于事件的模型。因此,为了检索值,我必须设置一个回调处理程序,然后在数据库中抛出一个get-request。它是这样完成的:

[... 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 page返回一个void指针,但是说:“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]。所以我很困惑。如何检索我放入cookie的值?

修改 我忘了提到我需要进一步处理数据并希望对其进行更改。

1 个答案:

答案 0 :(得分: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 */