C++local function definitions are illegal

#include<iostream.h>classgoods{private:intcode;staticcharname[10];staticdoubleprice[1... #include<iostream.h>
class goods
{
private:
int code;
static char name[10];
static double price[10];
static int num[10];
static int total;
public:
goods(){code=123456;}
void input();
void sell();
void start();
};

void goods::input()
{
cout<<"请输入密码:"<<endl;
int x;
while(1)
{
cin>>x;
if(x==code)
{
cout<<"欢迎进入系统!"<<endl;
cout<<"请输入需要录入的商品种类数:"<<endl;
int n;
cin>>n;
total=n;
cout<<"请输入所有商品名称、价格及数目:"<<endl;
for(int i=0;i<total;i++)
{
cin>>name[i]>>price[i]>>num[i];
}
break;
}
else
cout<<"密码错误!请重新输入:"<<endl;
}

void goods::sell()
{
char a;int k;
cout<<"请输入您要买的物品名称及数目(输入Q时退出系统):"<<endl;
cin>>a>>k;
if(a=='Q')
{
cout<<"您已退出系统,欢迎下次再来!再见!"<<endl;
break;
}
while(a!='Q')
{
int j=0;
for(;j<total;j++)
{
if(a==name[j])break;
}
num[j]=num[j]-k;
if(num[j]<0)
cout<<"对不起,该商品已售完,欢迎选购其他商品。"<<endl;
else
{
cout<<"您需要的物品为:"<<name[j]<<endl;
cout<<"单价是:"<<price[j]<<endl;
cout<<"您需要付钱数是:"<<k*price[j]<<endl;
cout<<"该商品剩余:"<<num[j]<<endl;
}
cin>>a>>k;
cout<<"请输入您要买的物品名称及数目(输入Q时退出系统):"<<endl;
}
}
void goods::start(const goods &A)
{
cout<<"请选择您的角色(管理员输入M,顾客输入C):"<<endl;
char B;
cin>>B;
while(B!='M'&&B!='c')
{
switch(B)
{
case('M'):A.input();break;
case('C'):A.sell();break;
default:{cout<<"输入错误!请重新输入:"<<endl;cin>>B;}
}
}
}

for(int i=0;i<10;i++)
{
char goods::name[i]='0';
double goods::price[i]=0;
int goods::num[i]=0;
}
int goods::total=0;

void main()
{
goods person;
person.start(person);

}

调试的时候出现以下错误:实在是不知道为什么,忘详解:
--------------------Configuration: 77 - Win32 Debug--------------------
Compiling...
77.cpp
F:\c++\6\6-5\77.cpp(43) : error C2601: 'sell' : local function definitions are illegal
F:\c++\6\6-5\77.cpp(74) : fatal error C1903: unable to recover from previous error(s); stopping compilation
执行 cl.exe 时出错.

77.obj - 1 error(s), 0 warning(s)
展开
 我来答
CdPzh
推荐于2016-06-27 · TA获得超过3064个赞
知道小有建树答主
回答量:641
采纳率:0%
帮助的人:755万
展开全部
报一个错误,其实不止一个。
'sell' : local function definitions are illegal,此错误是由于上一个函数未结束造成。
input函数中,大括号不匹配,在末尾添加一个“}”即可解决这个错误。
但一波刚平,多波又起。再编译,出现了十几个
错误。细看看,所报不差。
void start();这是声明。
void goods::start(const goods &A)这是定义。可见二者不符。
char goods::name[i]='0';
double goods::price[i]=0;
int goods::num[i]=0;
上三外有变量重定义之错,要把类型符去掉。
int goods::total=0;亦如此
sell函数定义中,第一个break妥,建议改为return.
start函数中,把for前一大括号移到int goods::total=0;之前或之后,看你的逻辑而定。
还剩两处错误,好像与你的函数有关,我不细看了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式