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在代码块中执行
答案 0 :(得分:4)
它应该工作。
以下内容有效,名为copy-list-initialization:
joe = {2,60.0};
事实上,正在初始化的右侧是临时的。看看this answer。
如所提供示例的注释中所述,以下是初始化。更具体地说,也为copy-list-initialization。 (直到c ++ 11,它以前是 copy initialization,但是现在已经从c ++ 11开始接受了大括号):
Employee joe={2,60.0}
或者您可以使用copy assignment:
joe = Employee{2,60.0};
定义变量时可以使用aggregate initialization:
Employee joe{2,60.0};
答案 1 :(得分:1)
一种常用的方法是在C ++中正确地初始化struct
,就像通过一个正确的构造函数一样:
struct Employee
{
int age;
double wage;
Employee(int _age, double _wage): age(_age),wage(_wage) {}
};
然后,将其用作:
Employee joe(2, 60.0); // declaration and initialization.