태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
VC++의 STL 구현이 워낙 직설적(?)이라 STL의 hash보다 CAtlMap이 성능이 월등히 뛰어나다 해서
프로젝트의 hash를 전부 CAtlMap으로 교체했다.

성능비교:

그런데 요따구의 컴파일 에러가 발생!
1>e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(128) : error C2440: '<function-style-cast>' : 'const CString'에서 'ULONG_PTR'(으)로 변환할 수 없습니다.
1>        이 변환을 수행할 수 있는 사용 가능한 사용자 정의 변환 연산자가 없거나 연산자를 호출할 수 없습니다.
1>        e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(127) : 클래스 템플릿 멤버 함수 'ULONG ATL::CDefaultHashTraits<T>::Hash(const T &) throw()'을(를) 컴파일하고 있습니다.
1>        with
1>        [
1>            T=CString
1>        ]
1>        e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(162) : 컴파일 중인 클래스 템플릿 인스턴스화 'ATL::CDefaultHashTraits<T>'에 대한 참조를 확인하십시오.
1>        with
1>        [
1>            T=CString
1>        ]
1>        e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(170) : 컴파일 중인 클래스 템플릿 인스턴스화 'ATL::CDefaultElementTraits<T>'에 대한 참조를 확인하십시오.
1>        with
1>        [
1>            T=CString
1>        ]
1>        e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(1989) : 컴파일 중인 클래스 템플릿 인스턴스화 'ATL::CElementTraits<T>'에 대한 참조를 확인하십시오.
1>        with
1>        [
1>            T=CString
1>        ]
1>        e:\works\trunk\prj\vrui\pluginman.h(25) : 컴파일 중인 클래스 템플릿 인스턴스화 'ATL::CAtlMap<K,V>'에 대한 참조를 확인하십시오.
1>        with
1>        [
1>            K=CString,
1>            V=int
1>        ]

머냐.. MSDN에 있는대로 거의 그대로 사용했는데!!

그래서 몇일간의 삽질을 거친 후..
MS에서 CString에 대한 구현을 여기저기 해놔서 그렇다는 이유를 알게되었다.

그래서 엄청 단순하게 해결한 것이 바로!
CAtlMap<CString, int>
라는 코드를
CAtlMap<CAtlString, int>
로 바꿔서 그냥 해결...

아 허무하다.. 몇일을 날린거냐..
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by |꼬마늑대|

댓글을 달아 주세요

  1. 2010/08/17 20:41   댓글주소   댓글쓰기   수정/삭제

    비밀댓글입니다

    • Favicon of http://blog.tinywolf.com BlogIcon |꼬마늑대| 2010/08/17 23:17   댓글주소   수정/삭제

      저도 급관심이 가는군요.
      그런데 한 보름정도 정신없이 일을 하는 중이라
      천천히 연락드려도 되겠습니까?

      나중에 연락드리겠습니다. 기다려주세요~
      댓글 남겨주셔서 감사합니다.

  2. 나쁜남자 2010/11/11 15:48   댓글주소   댓글쓰기   수정/삭제

    좋은 정보입니다.

 체크하면 블로그 관리자에게만 내용을 공개합니다.