我正在用C ++ 14和Qt编写一个跨平台应用程序。在某些头文件中,我定义了const static std::map
来保存枚举与字符串或列表之间的关系。在桌面编译器上,代码可以编译并正常工作,在移动编译器上,我会遇到一系列no matching constructor for initialization of 'const std::map<...>'
错误。 std::vector
的初始化程序列表似乎被接受。代码如下:
static const std::map<enum, std::string> ENUM_TO_STRING = { { VALUE_ENUM, "value" } };
似乎还好。我已经读过有关使用APPLIB = gnulib_static
的信息,但这是针对Android Studio的修复程序,对Qt Creator而言毫无意义。运行时初始化会破坏使用静态常量映射的目的,因此我宁愿避免使用它,而且我不得不用这种方式重新填充很多映射。
我必须对地图初始化列表使用其他语法吗?甚至支持此功能吗?如果没有,有没有办法提供?
我正在使用Android ndk版本r19(可能是?),Qt Creator 4.8.1,Qt 5.12.0。