我一直在尝试编译以下代码,但没有成功:

enum class gType {GAME1, GAME2, GAME3};
typedef std::map<std::string, gType> gamesTypesMap;
gamesTypesMap gameTypes;
gameTypes["game_one"] = gType::GAME1;


我收到3个错误:

error: C++ requires a type specifier for all declarations gameTypes["game_one"] = gType::GAME1;
error: size of array has non-integer type 'const char [8]' gameTypes["game_one"] = gType::GAME1;
error: 'gType' is not a class, namespace, or scoped enumeration


gameTypes [“ game_one”] = gType :: GAME1;

任何帮助将不胜感激

最佳答案

确保包括map和string标头,并使用支持C ++ 11的编译器。以下代码使用clang ++在我的机器上编译

#include <string>
#include <map>

int main()
{
  enum class gType {GAME1, GAME2, GAME3};
  typedef std::map<std::string, gType> gamesTypesMap;
  gamesTypesMap gameTypes;
  gameTypes["game_one"] = gType::GAME1;

  return 0;
}

关于c++ - 将枚举与std::map <>混合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34005936/

10-15 04:32