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
你看下你成员的类型吧,首先是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)
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
试过p2={false,"某",40,9876.5};
么?
#5
[Quote=引用 4 楼 tuming1990 的回复:]
还是不行
还是不行
#6
什么编译器呢?dev-c++没任何问题
#7
Microsoft Visual c++ 6.0
#8
哎,只有VC6这样的垃圾货会出这些东东。珍惜生命,远离VC6.
string("某")也许能让你好过点。
string("某")也许能让你好过点。
#9
哈哈 编译器问题啦!!新手飘过!!
#10
改成这样:
Person p2;
p2.name = "某";
p2.age = false;
p2.salary = 9876.5;
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
你看下你成员的类型吧,首先是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)
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
试过p2={false,"某",40,9876.5};
么?
#5
[Quote=引用 4 楼 tuming1990 的回复:]
还是不行
还是不行
#6
什么编译器呢?dev-c++没任何问题
#7
Microsoft Visual c++ 6.0
#8
哎,只有VC6这样的垃圾货会出这些东东。珍惜生命,远离VC6.
string("某")也许能让你好过点。
string("某")也许能让你好过点。
#9
哈哈 编译器问题啦!!新手飘过!!
#10
改成这样:
Person p2;
p2.name = "某";
p2.age = false;
p2.salary = 9876.5;
Person p2;
p2.name = "某";
p2.age = false;
p2.salary = 9876.5;
#11
vc6.0编译器的问题 不能直接初始化 vc2010或unix linux下的编译器这么初始化都么问题
#12
这个是版本的问题,在vc++7.0之前的版本还不支持对以string对象的结构进行初始化,这是我是在国外的教材上看到的。如果改程序的话,用数组代替string类对象接受字符串就好了吧。