C++ 结构体数组
想请问各位大佬下面这段代码在Visual C++ 6.0运行不出来是错在哪里?报错也看不太懂#include <iostream>
using namespace std;
#include <string>
struct Student
{
string name;
int age;
int scores;
};
int main()
{
struct Student arr =
{
{"张三",20,100},
{"李四",30,90},
{"王五",40,80}
};
arr.name = "赵六";
arr.age = 50;
arr.scores = 70;
for (int i = 0; i < 3; i++)
{
cout << "姓名:" << arr.name
<< "年龄:" << arr.age
<< "分数:" << arr.scores << endl;
}
system("pause");
return 0;
}
下面是报错内容:
error C2440: 'initializing' : cannot convert from 'char ' to 'struct Student'
No constructor could take the source type, or constructor overload resolution was ambiguous
error C2440: 'initializing' : cannot convert from 'const int' to 'struct Student'
No constructor could take the source type, or constructor overload resolution was ambiguous
error C2440: 'initializing' : cannot convert from 'const int' to 'struct Student'
No constructor could take the source type, or constructor overload resolution was ambiguous
fatal error C1903: unable to recover from previous error(s); stopping compilation
执行 cl.exe 时出错. vc6 报错吗?
我这边的 gcc 编译这个代码没问题呀
人造人 发表于 2021-7-23 15:17
vc6 报错吗?
我这边的 gcc 编译这个代码没问题呀
我也感觉没问题,但就是报错,也不知道为什么 你这到底是在写 C还是在写 C++,看得我莫名其妙的
说你在写 C 吧 你这又是 namespace又是 cout 的
说你在写 C++ 吧,没看懂你这写的是个啥
请问你到底是要写 C 还是写 C++?
写 C 就不要用什么 coutstring
写 C++ 我就笑了
谁告诉你可以这么赋值的?
struct Student arr =
{
{"张三",20,100},
{"李四",30,90},
{"王五",40,80}
};
不要觉得 C++ 真的就只是 C 的超集,C++的坑多着呢
C++要列表初始化得先有列表初始化构造
真想要列表初始化,请使用 initializer_list
不过,我建议你还是先把C++基础的构造函数写好吧 本帖最后由 临时号 于 2021-7-24 00:45 编辑
你的错误在于Student这个结构中定义了string类型的成员,从而导致了不能用initializer list 进行初始化;string是std的定义的一个容器,从它的实现上看它含有一个保护成员,所以string不能用initializer list 进行初始化;所以你的程序出错了。当然,你的VC6.0太老了,我在Dev C++ 上编译就没问题
页:
[1]