c++ - 为什么我不能像这样初始化结构?

标签 c++ c++11

struct Employee
{
    int age;
    double wage;
};

Employee joe;
joe = {2,60.0}; //using initialization list instead of doing Employee joe={2,60.0}

我在 Visual Studio 2015 中遇到编译错误,但能够使用 C++ 版本 C++11 在代码块中执行

最佳答案

它应该可以工作。

复制列表初始化

以下是有效的,称为 copy-list-initialization :

joe = {2,60.0};

它实际上是右侧正在初始化的临时文件。看看this answer .

如所提供示例的注释中所述,以下是初始化。更具体地说,它copy-list-initialization . (它曾经是 copy initialization 直到 c++11,但现在从 c++11 开始就接受了大括号):

Employee joe={2,60.0}

复制作业

或者您可以使用 copy assignment :

joe = Employee{2,60.0};

聚合初始化

你可以使用 aggregate initialization定义变量时:

Employee joe{2,60.0};

关于c++ - 为什么我不能像这样初始化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758275/

相关文章:

c++ - 如何使用boost获取前一天的日期?

c++ - 任何实例访问(一个类的)所有实例

c++ - 错误: to_string was not declared in this scope

c++ - 枚举类的 GoogleTest 测试错误打印

C++ 不会打印最后一个值,但稍后会打印(令人困惑)

c++ - 映射可变参数模板参数

c++ - 为什么 C 需要 "struct"关键字而不是 C++?

C++11 传递 POD 类型的值比 const 引用差

c++ - std::reference_wrapper 不能很好地与 std::bind 一起工作

c++ - 从模板类继承并使用继承其构造函数