1


0

エラーC2593:演算子=はあいまいです
typedef map REVERSETAG_CACHE ;
REVERSETAG_CACHE::iterator   revrsetagcacheiter;
.
.
.
wstring strCurTag;
strCurTag =  revrsetagcacheiter->second; //Error C2593

_ エラーC2593:演算子=はあいまいです _

上記の割り当てでこのエラーが発生するのはなぜですか? VC6で動作します。 VC9ではコンパイルされません。

4 Answer


3


推測では、VC6では複数のユーザー定義変換を適用できますが、VC9では適用できません。 一般的な問題については 暗黙的な変換をご覧ください。

一般的な解決策は、コンパイラーに変換させるのではなく、必要な変換を自分で提供することです。


2


`+ revrsetagcacheiter→ second `は ` IWString +`型です。 それゆえ、それはコンパイルされません。 VC6でもコンパイルされるとは思わない。

もう一度試してみましょう:あなたのBasicStringクラスはc_str()メソッドですか? もしそうなら、 `+ std

wstring str(iter→ second.c_str()); +`を使用してwstringに変換してみてください


0


割り当てられたものを正しい型にキャストしてみてください。

といった:

strCurTag =(wstring)revrsetagcacheiter-> second。

いっそのこと、あなたが意味しているかもしれません:

IWstring strCurTag;


0


あなたは通常、暗黙の変換を避けるべきです。 特にどちらの型が関係しているかを知るのが簡単な場合は、すべての割り当てが一方と他方でまったく同じ型で機能するようにします。 暗黙の変換に頼る、または頼りにしようとするのは得策ではありません。

だから:

strCurTag = static_cast(revrsetagcacheiter-> second);

コンパイルしない、それから私たちは問題について考え始めるべきです。