2012-07-04 4 views
1

문자열을 열거 형으로 변환해야합니다. 문자열 열거 형 템플릿 오류

나는 String to enum in C++

의 아이디어를 따라 그리고 이것은 내 코드입니다 :

#ifndef ENUMPARSER_H 
#define ENUMPARSER_H 
#include <iostream> 
#include <map> 
#include <string> 

enum MYENUM 
{ 
    VAL1, 
    VAL2 
}; 
using namespace std; 
template <typename T> 
class EnumParser 
{ 
    map<string, T> enumMap; 
public: 
    EnumParser(); 
    T ParseEnum(const string &value) 
    { 
     map<string, T>::const_iterator iValue= enumMap.find(value); 
     if(iValue!=enumMap.end()) 
      return iValue->second; 
    } 

}; 

EnumParser<MYENUM>::EnumParser() 
{ 
    enumMap["VAL1"] = VAL1; 
    enumMap["VAL2"] = VAL2; 
} 

#endif // ENUMPARSER_H 

나는 다음과 같은 오류를 얻을 컴파일하는 트링 : enter image description here

내가 QT에서 일하고 있어요 4.8.

내 실수는 무엇입니까?

+0

typename map :: const_iterator iValue = enumMap.find (value); const_iterator는 종속 이름입니다. – ForEveR

답변

2

map<string, T>::const_iterator 종속 이름, 당신이 필요합니다

typename map<string, T>::const_iterator iValue= enumMap.find(value); 

당신은 주제 here에 대한 자세한 내용을보실 수 있습니다.

+0

나는 아직도 마지막 에러를 가지고있다. (너무 적은 템플릿 - 파라미터 -리스트) – sara

+0

MYENUM을위한 생성자를 전문화 할 때, 당신은 c- tor 전에 템플릿을 가지고 있는가? – ForEveR

+0

@ForEveR 당신이 옳습니다, 그것이 내가 고쳐 놓은 방법입니다 ... – sara