c++ - 分配给结构映射的语法

标签 c++ map struct c++11 initializer-list

struct Structure {
//  Structure(const char* n, int v, bool a) : name(n), value(v), awesome(a) {}
  const char* name;
  int value;
  bool awesome;
};
std::map<const char*, Structure> map;
map["alpha"] = {"Alpha", 0, true};
map["beta"]  = {"Beta",  1, false};
map["gamma"] = {"Gamma", 2, true};

G++ (4.6) 接受 C++03 中的这种赋值语法,但提示“扩展的初始化语法仅在 C++0x 中可用”(释义)。我知道我可以创建一个按顺序接受值的构造函数,但我想知道这种语法是否可以接受(没有 C++0x),或者 G++ 是否只是安抚我,因为我对 C+ 非常着急+0x。

用 clang++ 编译甚至不允许它(w/C++0x,我假设缺少初始化列表),说“预期的表达式”,这基本上意味着“那到底是什么?”,甚至当我使用构造函数(上面已注释掉)时,它会抛出错误。

总结:那么基本上,要使用的正确语法是什么?我可以使用初始化列表格式(在 C++03 或 C++0x 中)吗?

最佳答案

以上代码只有在C++0x中使用新的统一初始化语法才合法。 C++03 会拒绝这个。在此期间,为您的 struct 定义构造函数是可行的方法。

关于c++ - 分配给结构映射的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007591/

相关文章:

c++ - 错误弃用了从字符串常量到 'char*' 的转换

scala - 如何使用 Anorm 将 Row 映射到类?

C 嵌套结构的默认初始化

c++ - 为什么之前没有在类定义的末尾声明对象;就像为 C/C++ 中的结构所做的那样?

c++ - make_pair 是在栈上还是堆上?

c - 如何处理接口(interface)和实现中不完整的类型定义和前向声明

c++ - 如何轻松查看 C/C++ #include 图?

c++ - 打开和关闭 ODBC 连接导致崩溃

c++ - 具有错误值的二维 vector

c++ - 给定一个整数数组,找到第一个唯一的整数