C++相談室 part119 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0806デフォルトの名無しさん
2015/10/05(月) 14:18:19.75ID:VFapxPBustd::map<std::wstring, std::wstring> testmap;
testmap[L"Hello"] = L"World";
const std::map<std::wstring, std::wstring>& testmap2 = testmap;
std::wstring val = testmap2[L"Hello"];
この4行目でC2678
二項演算子 '[': 型 'const std::map<std::wstring,std::wstring,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' の
左オペランドを扱う演算子が見つかりません (または変換できません)
が発生するんだけど、要は「鍵と要素がwstring」で「constな」mapを上記のようにリテラル文字列で[]参照する書き方ってできる・・・?
const std::wstring ws = L"Hello";
std::wstring val = testmap2[ws];
とかやってもだめだった
エラーの詳細としては、mapのoperator[]に「wstring&」と「wstring&&」の両方があって曖昧だからNGらしい
そもそもconstなmapなのに要素変更にも使える[]を呼んでいるのがダメってことかいね?const外せば動くし
■ このスレッドは過去ログ倉庫に格納されています