求解?C++ 结构类型的一些问题 错误为non-aggregates cannot be initialized with initializer list

时间:2021-09-04 22:46:29
#include <iostream>
using namespace std;
#include <string>

struct Person{bool gender;
string  name;
int age; 
double salary;};

int main()
{      

struct Person p1; 
struct Person p2={"某",false,9876.5};     //错误就是这一行 错误代码为 error C2552: 'p2' : non-aggregates cannot be initialized with initializer list
Person p3 = p2;
p1.name="某";
p1.gender=true;
p1.age=40;
p1.salary=1234.5;
cout<<p1.name <<"是个"<<(p1.gender?"帅哥":"美女")<<",工资"<<p1.salary <<endl;

system("pause");
return 0;
}

12 个解决方案

#1


struct Person p2={"某",false,9876.5}; 
你看下你成员的类型吧,首先是bool然后才是string

#2


改回来了 改成struct Person p2={"某",false,40,9876.5};还是不行

#3


--------------------Configuration: 1234 - Win32 Debug--------------------
Compiling...
1234.cpp
D:\test\1234.cpp(17) : error C2552: 'p2' : non-aggregates cannot be initialized with initializer list
Error executing cl.exe.

1234.exe - 1 error(s), 0 warning(s)

#4


引用 2 楼 a2175919 的回复:
改回来了 改成struct Person p2={"某",false,40,9876.5};还是不行

试过p2={false,"某",40,9876.5};
么?

#5


[Quote=引用 4 楼 tuming1990 的回复:]
   还是不行

#6


什么编译器呢?dev-c++没任何问题

#7


引用 6 楼 pengzhixi 的回复:
什么编译器呢?dev-c++没任何问题
   Microsoft Visual c++ 6.0

#8


哎,只有VC6这样的垃圾货会出这些东东。珍惜生命,远离VC6.
string("某")也许能让你好过点。

#9


哈哈  编译器问题啦!!新手飘过!!

#10


改成这样:
Person p2;
p2.name = "某";
p2.age = false;
p2.salary = 9876.5;

#11


vc6.0编译器的问题 不能直接初始化 vc2010或unix linux下的编译器这么初始化都么问题

#12


这个是版本的问题,在vc++7.0之前的版本还不支持对以string对象的结构进行初始化,这是我是在国外的教材上看到的。如果改程序的话,用数组代替string类对象接受字符串就好了吧。

#1


struct Person p2={"某",false,9876.5}; 
你看下你成员的类型吧,首先是bool然后才是string

#2


改回来了 改成struct Person p2={"某",false,40,9876.5};还是不行

#3


--------------------Configuration: 1234 - Win32 Debug--------------------
Compiling...
1234.cpp
D:\test\1234.cpp(17) : error C2552: 'p2' : non-aggregates cannot be initialized with initializer list
Error executing cl.exe.

1234.exe - 1 error(s), 0 warning(s)

#4


引用 2 楼 a2175919 的回复:
改回来了 改成struct Person p2={"某",false,40,9876.5};还是不行

试过p2={false,"某",40,9876.5};
么?

#5


[Quote=引用 4 楼 tuming1990 的回复:]
   还是不行

#6


什么编译器呢?dev-c++没任何问题

#7


引用 6 楼 pengzhixi 的回复:
什么编译器呢?dev-c++没任何问题
   Microsoft Visual c++ 6.0

#8


哎,只有VC6这样的垃圾货会出这些东东。珍惜生命,远离VC6.
string("某")也许能让你好过点。

#9


哈哈  编译器问题啦!!新手飘过!!

#10


改成这样:
Person p2;
p2.name = "某";
p2.age = false;
p2.salary = 9876.5;

#11


vc6.0编译器的问题 不能直接初始化 vc2010或unix linux下的编译器这么初始化都么问题

#12


这个是版本的问题,在vc++7.0之前的版本还不支持对以string对象的结构进行初始化,这是我是在国外的教材上看到的。如果改程序的话,用数组代替string类对象接受字符串就好了吧。