mapによるkeyとvalueのinsertに失敗しております。
STLのmapコンテナにて、
valueを取得したり、
keyとvalueを登録するソースを書いていました。
get(key)にあたって、
valの取得に失敗した際には、
mapコンテナ上のkey-valueデータと
同期されているMySQLより、
データを取得してきます。
MySQLよりkeyに対応するvalの取得が
完了したら、
そのkeyとvalをmapコンテナに
insertしたいと思っています。
つきまして、
insertを行おうと、
「_container.insert(std::make_pair(key, val));」の一文を
ソースに挿入したところ、
「型が違う!」という内容(?)のエラー文で
コンパイル時に怒られてしまいました。
ただ、「どの様に直してごらん!」と
エラー文が言っているのか、
今いち、意味を理解できないでいます。
このエラー情報的には、
どんな風の型の改善を求められているのでしょうか?
教えていただけるとありがたいです。
もし可能でしたら、pointBの
「_container.insert(std::make_pair(key, val));」の部分で、
MySQLから取得済みkeyとvalを、
pointAのkeyとvalに代入する方法も
教えていただけるとありがたいです。
どちらかでも、
アドバイスをいただけますとありがたいです。
どうぞ宜しくお願い致します。
--------------------------------------------------
template<typename KEY, typename VALUE>
class hoge : public service_object<ipl<KEY, VALUE>>
{
virtual void put(key_type key, value_type val) {
_container.insert(std::make_pair(key, val)); // pointA
}
virtual cc::fu<value_type> get(key_type key) {
typename container_type::iterator iterator = _container.find(key);
if (iterator != _container.end()) {
return cc::fu<value_type>((*iterator).second);
}else {
//getにした場合MySQLよりkeyとvalueを取得完了できるので取得した。
/* MySQLより取得したkeyとvalをpointAのようにmapコンテナにinsertしたい。*/
_container.insert(std::make_pair(key, val)); //pointB
}
}
};
--------------------------------------------------
■エラー文
error: conversion from
std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > > >, bool>’ to non-scalar type ‘csrpc::future<boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > >’ requested
お礼
ご回答ありがとうございます。 かなり大きなプログラムの一部なので掲載しづらかったのですが、今補足を掲載しようとして最低限の部分だけ抜き出してみたところちゃんと動きました。 全体ではまだどこがおかしいのか分かりませんが、クラス定義とは別の部分に問題があるようですのでもう少し調べてみます。 よく確かめずに質問してしまって大変申し訳ありませんでした。