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) 展开
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) 展开
1个回答
展开全部
报一个错误,其实不止一个。
'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;之前或之后,看你的逻辑而定。
还剩两处错误,好像与你的函数有关,我不细看了。
'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;之前或之后,看你的逻辑而定。
还剩两处错误,好像与你的函数有关,我不细看了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询