请问这题哪儿错了?C++
我检查了好几篇了.每一个字母都是对着书上的.运行有一处错误.它说我的stu初始化列表什么什么的.我晕.让大家看一下.要是没问题.应该就是VC++编译器问题了.谢谢.#in...
我检查了好几篇了.每一个字母都是对着书上的.运行有一处错误.它说我的stu初始化列表什么什么的.我晕.让大家看一下.要是没问题.应该就是VC++编译器问题了.谢谢.
#include<iostream>
#include<string>
using namespace std;
struct student
{int num;string n;float s[3];
}stu={1001,"刘德华",85.5,78.5,93.5};
int main()
{void print(student);
print(stu);
return 0;}
void print(student stud)
{cout<<stu.num<<","<<stu.n<<","<<stu.s[0]<<stu.s[1]<<stu.s[2];}
楼1.不行啊.错误反而 增加了1个
我都怀疑是编译器问题了.
真的是编译器原因.我改为char n[20];马上运行正确.你们觉得呢?那位的方法好特别.还是第一次见过.能够运行.就是看不懂那个格式.
错误提示为:error C2552: 'stu' : non-aggregates cannot be initialized with initializer list
Error executing cl.exe.
谢谢大家!
总结了一下:是编译器问题.因为在别的编译器上能通过! 展开
#include<iostream>
#include<string>
using namespace std;
struct student
{int num;string n;float s[3];
}stu={1001,"刘德华",85.5,78.5,93.5};
int main()
{void print(student);
print(stu);
return 0;}
void print(student stud)
{cout<<stu.num<<","<<stu.n<<","<<stu.s[0]<<stu.s[1]<<stu.s[2];}
楼1.不行啊.错误反而 增加了1个
我都怀疑是编译器问题了.
真的是编译器原因.我改为char n[20];马上运行正确.你们觉得呢?那位的方法好特别.还是第一次见过.能够运行.就是看不懂那个格式.
错误提示为:error C2552: 'stu' : non-aggregates cannot be initialized with initializer list
Error executing cl.exe.
谢谢大家!
总结了一下:是编译器问题.因为在别的编译器上能通过! 展开
7个回答
展开全部
请你把错误信息也贴出来看看。
编译器错误 C2552表示不能用初始值设定项列表初始化非聚合。也就是说类型string不是以下的聚合:
数组
没有以下内容的类、结构和联合:
构造函数
私有或受保护的成员
基类
虚函数
所以更改结构中成员n的类型,可以成功。
编译器错误 C2552表示不能用初始值设定项列表初始化非聚合。也就是说类型string不是以下的聚合:
数组
没有以下内容的类、结构和联合:
构造函数
私有或受保护的成员
基类
虚函数
所以更改结构中成员n的类型,可以成功。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<string>
using namespace std;
struct student
{
student(int i,string name,float s1,float s2,float s3){
num = i;n = name;s[0] = s1;s[1] = s2;s[2] = s3;
}
int num;string n;float s[3];
}stu(1001,"刘德华",85.5,78.5,93.5);
void print(student);
int main()
{
print(stu);
return 0;
}
void print(student stud)
{cout<<stu.num<<","<<stu.n<<","<<stu.s[0]<<stu.s[1]<<stu.s[2];}
呵呵......
加入了一个构造函数,我看你用的C++语法,你不应该看不懂构造函数啊...
#include<string>
using namespace std;
struct student
{
student(int i,string name,float s1,float s2,float s3){
num = i;n = name;s[0] = s1;s[1] = s2;s[2] = s3;
}
int num;string n;float s[3];
}stu(1001,"刘德华",85.5,78.5,93.5);
void print(student);
int main()
{
print(stu);
return 0;
}
void print(student stud)
{cout<<stu.num<<","<<stu.n<<","<<stu.s[0]<<stu.s[1]<<stu.s[2];}
呵呵......
加入了一个构造函数,我看你用的C++语法,你不应该看不懂构造函数啊...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上的
定义了3个变量,赋值的个数也要一样
定义了3个变量,赋值的个数也要一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
{1001,"刘德华",{85.5,78.5,93.5}}; 这样行不行?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在Visual Studio .Net 2003上运行就没问题!!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询