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
No.1ベストアンサー
- 回答日時:
・template の型引数である KEY や VALUE と key_type, value_type はどのような関係にあるのか
・_container の型は何か
・変数 val の型は何か
あたりがわからんと, なんとも答えようがない気がするなぁ.
あと, 何も考えずに std::make_pair を使うのではなく, 適切な型の中で定義されている value_type を使ってオブジェクトを作った方がよいと思う.
もちろん「value_type で問題ないなら std::make_pair でも問題ない」わけなんだけど, std::make_pair よりも value_type の方が問題がより明確になるはず.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudio2005を使っています。
-
コンパイルできません
-
C++でShowCursorを使いたい。
-
VHDLのsignedとunsignedの違いは?
-
JPEGやPNGが読めるLoadImage関数
-
DirectXのD3DXVECTOR3
-
wrl.hはどこで手に入れますか
-
switch文のエラーについて
-
C言語の漢字のホルダーは、chdi...
-
C++で、環境変数の読み込み方を...
-
Haru PDF Library
-
C++での標準関数の位置は?
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
プログラムでの数字につく”f”の...
-
O(n log n)について2
-
if と配列の組み合わせ
-
関数f(x)= x³‐3ax²+3ax+2 が極...
-
getcの改行判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
なぜ、C++の標準ヘッダをインク...
-
gccでコンパイル時のエラー
-
空ENTERの判別
-
【C++】ヘッダ内でstringを格納...
-
snprintfが使用できない。
-
enumの値から定義名を文字列化...
-
#include "fstream.h"
-
C++で、テキストファイルを一行...
-
std::wstringのメモリリークに...
-
C++での <iostream.h>と<iostre...
-
VC++で文字列から任意の文字を...
-
#defineの使い方について
-
wstringの主力
-
vc++の使い方について
-
std::map の const 修飾について
-
string型のフォーマット書式指...
-
構造体配列のvectorへの変換と...
-
指定した文字を削除したい
おすすめ情報