VC++6.0下运行出错 就这行-Person leader[3]={"li",0,"zhang",0,"fun",0}; 怎样修改?? 20
#include<iostream>#include<string>usingnamespacestd;structPerson{stringname;intcount;...
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
int count;
};
int main()
{
Person leader[3]={"li",0,"zhang",0,"fun",0};
int i,j;
string leader_name;
for(i=0;i<10;i++)
{
cin>>leader_name;
for(j=0;j<3;j++)
{if(leader_name==leader[j].name ) leader[j].count ++; }
}
cout<<endl;
for(i=0;i<3;i++)
cout<<leader[i].name<<".count is"<<leader[i].count <<endl;
return 0;
} 展开
#include <string>
using namespace std;
struct Person
{
string name;
int count;
};
int main()
{
Person leader[3]={"li",0,"zhang",0,"fun",0};
int i,j;
string leader_name;
for(i=0;i<10;i++)
{
cin>>leader_name;
for(j=0;j<3;j++)
{if(leader_name==leader[j].name ) leader[j].count ++; }
}
cout<<endl;
for(i=0;i<3;i++)
cout<<leader[i].name<<".count is"<<leader[i].count <<endl;
return 0;
} 展开
展开全部
改成
Person leader[3]={{"li",0},{"zhang",0},{"fun",0}};
可在VS2010上编译通过
在VC++6.0上报错是因为VC++6.0不能对包含string成员的结构体变量初始化
两种解决方法
一、用char数组替换string
二、单个赋值,如
leader[0].name="li";
leader[1].name="zhang";
leader[2].name="fun";
.....
Person leader[3]={{"li",0},{"zhang",0},{"fun",0}};
可在VS2010上编译通过
在VC++6.0上报错是因为VC++6.0不能对包含string成员的结构体变量初始化
两种解决方法
一、用char数组替换string
二、单个赋值,如
leader[0].name="li";
leader[1].name="zhang";
leader[2].name="fun";
.....
追问
书上给的就是这句 有些C++系统不能对包含string成员的结构体变量初始化
需要修改才能运行
前一个例子就是用char 但是有点浪费内存空间
只能单个赋值 没有其他改法了么??
追答
#include
#include
using namespace std;
struct Person
{
string name;
int count;
Person(string n, int c) {name = n; count = c;};//加个构造函数
};
int main()
{
Person leader[3]={
Person("li",0), //用构造函数初始化
Person("zhang",0), //同上
Person("fun",0) //同上
};
int i,j;
string leader_name;
for(i=0;i>leader_name;
for(j=0;j<3;j++)
{if(leader_name==leader[j].name ) leader[j].count ++; }
}
cout<<endl;
for(i=0;i<3;i++)
cout<<leader[i].name<<".count is"<<leader[i].count <<endl;
return 0;
}
展开全部
Person leader[3]={{"li",0},{"zhang",0},{"fun",0}};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Person leader[3]={"li",0,"zhang",0,"fun",0};
修改成
struct Person leader[3]={"li",0,"zhang",0,"fun",0};
试试,
若不行,将错误代码贴上来,方便查找错误原因
修改成
struct Person leader[3]={"li",0,"zhang",0,"fun",0};
试试,
若不行,将错误代码贴上来,方便查找错误原因
追问
: error C2440: 'initializing' : cannot convert from 'const int' to 'struct Person'
No constructor could take the source type, or constructor overload resolution was ambiguous
: error C2440: 'initializing' : cannot convert from 'char [6]' to 'struct Person'
liqi2_01.exe - 1 error(s), 0 warning(s)
有些C++系统不能对包含string成员的结构体变量初始化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼回答正确
Person leader[3]={{"li",0},{"zhang",0},{"fun",0}};
结构体数组初始化时对于每成员应该用{}分开
Person leader[3]={{"li",0},{"zhang",0},{"fun",0}};
结构体数组初始化时对于每成员应该用{}分开
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询