문제

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);

컴파일하지 않으면 문제에 대해 생각하기 시작해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top