오류 C2593 : 연산자 = 모호합니다
-
05-07-2019 - |
문제
typedef map<wstring , IWString> REVERSETAG_CACHE ;
REVERSETAG_CACHE::iterator revrsetagcacheiter;
.
.
.
wstring strCurTag;
strCurTag = revrsetagcacheiter->second; //Error C2593
오류 C2593 : 연산자 = 모호합니다
위의 과제가 왜이 오류를 제공합니까? VC6에서 작동합니다. VC9에서 컴파일하지 않습니다.
해결책
revrsetagcacheiter->second
유형입니다 IWString
. 따라서 컴파일하지 않습니다. VC6에서도 컴파일 할 것이라고 생각하지 않습니다.
마지막 시간을 시도하겠습니다: 당신의 기본 스트링 클래스 c_str () 메소드입니까? 그렇다면 WSTRING 사용으로 변환하십시오 std::wstring str(iter->second.c_str());
다른 팁
추측 할 때 VC6은 하나 이상의 사용자 정의 변환을 적용 할 수있게하는 반면 (올바르게) VC9는 그렇지 않습니다. 보세요 C ++ 암시 적 변환 일반적인 문제에 대한 논의.
일반적인 해결책은 컴파일러가 시도하지 않고 필요한 변환을 직접 제공하는 것입니다.
할당 한 내용을 올바른 유형으로 캐스트하십시오.
와 같은:
strCurTag = (wstring)revrsetagcacheiter->second;
더 나은 방법은 다음을 의미했을 수도 있습니다.
IWstring strCurTag;
일반적으로 암시 적 변환을 피해야합니다. 즉, 모든 과제가 한쪽에서 정확히 동일한 유형으로 작동합니다. 암시 적 전환에 의존하거나 의존하려는 것은 좋은 생각이 아닙니다.
그래서 만약:
strCurTag = static_cast<wstring>(revrsetagcacheiter->second);
컴파일하지 않으면 문제에 대해 생각하기 시작해야합니다.
제휴하지 않습니다 StackOverflow