2013-12-09 4 views
1

문자열을 FILE 포인터에 연결하고 문자열을 부호없는 긴 정수에 연결해야합니다. STL을 사용하면 간단하게 :STL std :: map에 해당하는 MFC

map<string, FILE *> 
map<string, unsigned long int> 

그러나 MFC CMap와 동등한 작업을 수행하는 방법을 모르겠다.

내가 시도 :

CMap<string, string &, FILE *, FILE * &> 
CMap<string, string *, FILE *, FILE **> 

하지만 두 경우 모두에서 오류를 받고 있어요 : C2440 타입 변환이 표준 문자열에서 변환 할 수 없습니다 오류가 난의 논리를 이해하기 모르겠어요

또한

을 DWORD_PTR하기 4 개의 템플릿 매개 변수가 있습니다.

누구든지 설명해 주시겠습니까? 고맙습니다.

+1

'std :: map'을 계속 사용하지 않는 이유는 무엇입니까? MFC와 호환되지 않습니다. –

+0

STL 맵은 EVC4에서 올바르게 지원되지 않기 때문에, 내가 인생을 복잡하게하기 때문에가 아닙니다. – Virus721

+0

오, 알겠습니다 - 당신의 질문에 eVC4에 대해 언급하지 않았지만, 어쨌든 당신의 답을 얻었을 것입니다. - 잘될 거라 희망합니다. –

답변

2
CMap<string, FILE*> 

CMap<string, unsigned long> 

는 잘 작동합니다. 4 개의 매개 변수를 사용하는 버전은 특수한 시나리오에만 해당됩니다.

+0

감사합니다. 나는 그들이 필수적이라고 생각했습니다. – Virus721

+0

나는 컴파일러가 템플릿에 대한 인수가 너무 적다는 것을 알아 차 렸습니다. 따라서 결국은 필수입니다. – Virus721

+1

컴파일러를 가지고 있지 않다면, 나는 긴 버전을 사용하지 않았다고 맹세 할 수있다. 어쨌든 문자열에서 filepointer 로의 맵은 다음과 같이 보일 수있다 : CMap . 문제의 유형을 성능 손실없이 쉽게 복사 할 수있는 경우 특수 참조 유형이 필요합니다. MCF 및 STL을 혼합 할 때 문제가 발생하여 다른 MFC 클래스와 함께 MCF 문자열 클래스를 사용하는 것이 좋습니다. – nvoigt

관련 문제