1

文字列を列挙型に変換する必要があります。

Stringのアイデアに従って、C++ で enum を作成しました

そして、これは私のコードです:

#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 に答える