在C++中,我试图将枚举值的std::map初始化为结构。

在头文件中:

enum ePrompts
{
    ePrompt1,
    ePrompt2,
    ...
};

enum eDataTypes
{
    eIntegers,
    eDoubles,
    ...
};

struct SomeInfo
{
    std::string text;
    eDataTypes type;
    float minVal;
    float maxVal;
};

std::map<ePrompts, SomeInfo> mInfoMap;

在cpp文件中:
void SomeClass::InitializeThis()
{
    // I would like to have an approach that allows one line per entry into the map
    mInfoMap[ePrompt1] = (SomeInfo){"text1", eIntegers, 2, 9}; //Error: Expected an expression

    // Also tried
    SomeInfo mInfo = {"text1", eIntegers, 2, 9};
    mInfoMap[ePrompt1] = mInfo; // works
    mInfo = {"text2", eIntegers, 1, 5}; //Error: Expected an expression
}

我可能在这里错过了一些非常简单的东西,但是我已经在Stack Overflow中进行了相当多的搜索,并且没有得出这样做的任何结果。任何帮助,将不胜感激!

最佳答案

您的第一行有正确的想法。只需稍作更改即可:

mInfoMap[ePrompt1] = SomeInfo{"text1", eIntegers, 2, 9};

07-27 22:35