字符串到枚举模板错误

时间:2012-07-04 14:38:26

标签: c++ string qt enums

我需要将String转换为枚举。

我在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。

我的错误是什么?

1 个答案:

答案 0 :(得分:2)

map<string, T>::const_iterator是一个从属名称,您需要:

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

您可以阅读有关主题here的更多信息。