1

我需要将字符串转换为枚举。

我按照String 中的想法在 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

当试图编译它时,我得到以下错误: 在此处输入图像描述

我正在开发 QT 4.8。

我的错误是什么?

4

1 回答 1

2

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

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

您可以在此处阅读有关该主题的更多信息。

于 2012-07-04T14:39:31.840 回答