小编Ste*_*sen的帖子

(VS2015)尝试使用初始化列表中的数据填充静态映射

我有一个类有点像:

class Object {
public:
    struct Flag {
        const uint32_t bit = 0;
        const wchar_t* name = L"";
        const wchar_t sign = L"";
    }

    static std::map<const char*, Flag> Flags;
}
Run Code Online (Sandbox Code Playgroud)

我目前在VS2015,但想支持clang和gcc(最新的).我的问题是,我无法弄清楚如何用数据实际初始化该地图.

我尝试将其内联,例如:

static std::map<const char*, Flag> Flags = {
    { "FOO1",       { 0, L"FOO1",       L'A' } },
    { "FOO2",       { 1, L"FOO3",       L'B' } },
    { "FOO3",       { 2, L"FOO3",       L'C' } }
}
Run Code Online (Sandbox Code Playgroud)

但是抱怨说只有const整数类型可以在课堂上.好的!所以我只是将它作为类定义中的声明(如第一个代码片段所示),并将其放在关联的cpp中:

static std::map<const char*, Object::Flag> Object::Flags = {
    { "FOO1",       { 0, L"FOO1",       L'A' } }, …
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list c++11 list-initialization

2
推荐指数
1
解决办法
207
查看次数