2

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);

それを取得したいときは、void ポインターを返すlcb_get_cookie man ページを使用する必要がありますが、次のように書かれています。だから私は次のようなことをしたい:

/* 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 に入れた値を取得するにはどうすればよいですか?

編集: データをさらに処理する必要があり、変更を加える必要があることを忘れていました。

4

1 に答える 1

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 */
于 2013-10-03T11:52:35.793 に答える