写了一个类。。但是有错误。。不知道错哪里唉。。
#include"iostream"
using namespace std;
class salary{
private:
double wage,subsidy,rent,waterfee,elecfee;
public:
salary(double a,b,c,d,e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
salary(){
wage=subsidy=rent=waterfee=elecfee=0;
};
void setwage(double f){ wage=f; };
void setsubsidy(double f){ subsidy=f; };
void setrent(double f){ subsidy=f; };
void setwaterfee(double f){ waterfee=f; };
void setelecfee(double f){ elecfee=f; };
double getwage(){ return wage; };
double getsubsidy(){ return subsidy; };
double getrent(){ return rent; };
double getwaterfee(){ return waterfee; };
double getelecfee(){ return elecfee; };
double realsalary();
};
double salary::realsalary(){
double realsalary;
realsalary=wage+subsidy-rent-waterfee-elecfee;
return realsalary;
};
class worker{
private:
static int m;
char name[8];
int age;
char dept[8];
salary A;
public:
worker(char a,int b,char c,double d,e,f,g,h): name(a),age(b),dept(c),A(d,e,f,g,h)
{
m++;
};
int getm(){ return m; };
};
int worker::m=0;
void main(){
worker x1("liu",20,"suibian",1000,200,500,100,200);
worker x2("pp",21,"suibian",1000,200,500,100,200);
}
错误码:
E:\编程\习题\311.cpp(8) : error C2629: unexpected 'class salary ('
E:\编程\习题\311.cpp(8) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
E:\编程\习题\311.cpp(39) : error C2629: unexpected 'class worker ('
E:\编程\习题\311.cpp(39) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
E:\编程\习题\311.cpp(49) : error C2661: 'worker::worker' : no overloaded function takes 8 parameters
E:\编程\习题\311.cpp(50) : error C2661: 'worker::worker' : no overloaded function takes 8 parameters
到底哪里错了。。求大神教一下
[解决办法]
#include"iostream"
using namespace std;
class salary{
private:
double wage,subsidy,rent,waterfee,elecfee;
public:
salary(double a,double b,double c,double d,double e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
salary(){
wage=subsidy=rent=waterfee=elecfee=0;
};
void setwage(double f){ wage=f; };
void setsubsidy(double f){ subsidy=f; };
void setrent(double f){ subsidy=f; };
void setwaterfee(double f){ waterfee=f; };
void setelecfee(double f){ elecfee=f; };
double getwage(){ return wage; };
double getsubsidy(){ return subsidy; };
double getrent(){ return rent; };
double getwaterfee(){ return waterfee; };
double getelecfee(){ return elecfee; };
double realsalary();
};
double salary::realsalary(){
double realsalary;
realsalary=wage+subsidy-rent-waterfee-elecfee;
return realsalary;
};
class worker{
private:
static int m;
char name[8];
int age;
char dept[8];
salary A;
public:
worker(char *a,int b,char *c,double d, double e,double f,double g,double h): age(b)
{
strcpy(name, a);
strcpy(dept, c);
m++;
};
int getm(){ return m; };
};
int worker::m=0;
void main(){
worker x1("liu",20,"suibian",1000,200,500,100,200);
worker x2("pp",21,"suibian",1000,200,500,100,200);
}
正确的程序
[解决办法]
salary(double a,b,c,d,e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
改成
salary(double a,double b,double c,double d,double e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
声明参数,不是在声明变量OK?
worker(char a,int b,char c,double d,e,f,g,h): name(a),age(b),dept(c),A(d,e,f,g,h)
worker x1("liu",20,"suibian",1000,200,500,100,200);
你声明的第一个变量时,传递的第一个参数和第三个是const char*型,而你的构造函数第一个和第三个参数的类型定义为char型.可以修改一下你的构造函数,比如:
worker(const char* a,int b,const char* c,double d,double e,double f,double g,double h):age(b),A(d,e,f,g,h)
{
sprintf(name,"%s",a);
sprintf(dept,"%s",c);
m++;
};
[解决办法]
#include"iostream"
using namespace std;
class salary{
private:
double wage,subsidy,rent,waterfee,elecfee;
public:
salary(double a,double b,double c,double d,double e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
salary(){
wage=subsidy=rent=waterfee=elecfee=0;
};
void setwage(double f){ wage=f; };
void setsubsidy(double f){ subsidy=f; };
void setrent(double f){ subsidy=f; };
void setwaterfee(double f){ waterfee=f; };
void setelecfee(double f){ elecfee=f; };
double getwage(){ return wage; };
double getsubsidy(){ return subsidy; };
double getrent(){ return rent; };
double getwaterfee(){ return waterfee; };
double getelecfee(){ return elecfee; };
double realsalary();
};
double salary::realsalary(){
double realsalary;
realsalary=wage+subsidy-rent-waterfee-elecfee;
return realsalary;
};
class worker{
private:
static int m;
char name[8];
int age;
char dept[8];
salary A;
public:
worker(char *a,int b,char *c,double d, double e,double f,double g,double h): age(b)
{
strcpy(name, a);
strcpy(dept, c);
m++;
};
int getm(){ return m; };
};
int worker::m=0;
void main(){
worker x1("liu",20,"suibian",1000,200,500,100,200);
worker x2("pp",21,"suibian",1000,200,500,100,200);
cout << x1.getm() <<endl;
}
#include"iostream"
using namespace std;
class salary{
private:
double wage,subsidy,rent,waterfee,elecfee;
public:
salary(double a,double b,double c,double d,double e):wage(a),subsidy(b),rent(c),waterfee(d),elecfee(e){};
salary(){
wage=subsidy=rent=waterfee=elecfee=0;
};
void setwage(double f){ wage=f; };
void setsubsidy(double f){ subsidy=f; };
void setrent(double f){ subsidy=f; };
void setwaterfee(double f){ waterfee=f; };
void setelecfee(double f){ elecfee=f; };
double getwage(){ return wage; };
double getsubsidy(){ return subsidy; };
double getrent(){ return rent; };
double getwaterfee(){ return waterfee; };
double getelecfee(){ return elecfee; };
double realsalary();
};
double salary::realsalary(){
double realsalary;
realsalary=wage+subsidy-rent-waterfee-elecfee;
return realsalary;
};
class worker{
private:
static int m;
char name[8];
int age;
char dept[8];
salary A;
public:
worker(char *a,int b,char *c,double d, double e,double f,double g,double h): age(b)
{
strcpy(name, a);
strcpy(dept, c);
m++;
};
int getm(){ return m; };
};
int worker::m=0;
void main(){
worker x1("liu",20,"suibian",1000,200,500,100,200);
worker x2("pp",21,"suibian",1000,200,500,100,200);
cout << x1.getm() <<endl;
}
这是我的代码