VS 2010 编译出错:error LNK2005求帮助
/*person.h*/
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
enum Title{zg=1,fg,zj,cj,jx,Null};
enum Position{ky=1,fk,zk,fc,zc,ft,zt,NUll}; //科员,副科,正科,副处,正处,副厅,正厅
class CDate{ //定义电子日历类
public:
//默认构造函数
CDate(int year=1985,int month=10,int day=1){ //带参构造函数
SetDate(year,month,day); //调用成员函数来初始化
}
void show(){
cout<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay<<endl; //显示日期
}
void SetDate(int year,int month,int day){
m_nYear=year;
m_nMonth=month;
m_nDay=day; //设置日期
}
friend ostream& operator<<(ostream& osObject,const CDate &d){
osObject<<d.m_nYear<<"/"<<d.m_nMonth<<"/"<<d.m_nDay<<endl;
return osObject;
}
friend istream& operator>>(istream& isObject,CDate &d){
isObject>>d.m_nYear>>d.m_nMonth>>d.m_nDay;
return isObject;
}
int getyear(){
return m_nYear;
}
int getmonth(){
return m_nMonth;
}
int getday(){
return m_nDay;
}
private:
int m_nYear;
int m_nMonth;
int m_nDay; //日 月 年
};
class Person{
public:
Person(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25);
int getID(){return ID;}
string getname(){return name;}
bool getsex(){return sex;}
int getage(){return age;}
bool operator==(const Person &t)const;
bool operator<(const Person &t)const;
void input();
void show();
static int CUR_ID;
int getBir_year(){return birthday.getyear();}
int getBir_month(){return birthday.getmonth();}
int getBir_day(){return birthday.getday();}
int getWor_year(){return work_time.getyear();}
int getWor_month(){return work_time.getmonth();}
int getWor_day(){return work_time.getday();}
protected:
int ID; //工号
string name; //姓名
CDate birthday; //出生日期
bool sex; //性别
int age; //年龄
CDate work_time; //入伍时间
};
class Teacher:virtual public Person{
public:
Teacher(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军", bool s=true,int a=25,Title t=Null); //派生类的构造函数
void input();
void show();
Title gettitle(){return title;}
protected:
Title title; //职称
float wage;
};
class Administrator:virtual public Person{
public:
Administrator(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25,Position p=NUll); //派生类的构造函数
void show();
void input();
Position getposition(){return position;}
protected:
Position position; //职务
float wage;
};
class Admin_tea:public Teacher,public Administrator{
public:
Admin_tea(int by=2010,int bm=8,int bd=30,int wy=1985,int wm=10,int wd=1,char *n="李小军",bool s=true,int a=25,Title t=Null,Position p=NUll); //派生类的构造函数
void show();
void input();
void set(int id,string sname,int by,int bm,int bd,bool xb,int a,int wy,int wm,int wd,Title t,Position p,float w){
birthday.SetDate(by,bm,bd);
work_time.SetDate(wy,wm,wd);
ID=id;
name=sname;
age=a;
sex=xb;
title=t;
position=p;
wage=w;
}
float getwage(){return wage;}
private:
float wage;
};
#endif
/*person.cpp*/
#include "person.h"
void Display_Title(Title &t){
switch(t){
case 1: cout<<"正高\n"; break;
case 2: cout<<"副高\n"; break;
case 3: cout<<"中级\n"; break;
case 4: cout<<"初级\n"; break;
case 5: cout<<"见习\n"; break;
default: cout<<"临时工\n";
}
}
void Display_Position(Position &p){
switch(p){
case 1: cout<<"科员\n"; break;
case 2: cout<<"副科\n"; break;
case 3: cout<<"正科\n"; break;
case 4: cout<<"副处\n"; break;
case 5: cout<<"正处\n"; break;
case 6: cout<<"副厅\n"; break;
case 7: cout<<"正厅\n"; break;
default: cout<<"临时工\n";
}
}
void input_Title(Title &t){
string s;
cin>>s;
if(s=="zg"||s=="正高"||s=="教授") t=zg;
else if(s=="fg"||s=="副高"||s=="副教授") t=fg;
else if(s=="zj"||s=="中级"||s=="讲师") t=zj;
else if(s=="cj"||s=="初级"||s=="助教") t=cj;
else if(s=="jx"||s=="见习"||s=="见习助教") t=jx;
else if(s=="") t=Null;
else cout<<"输入有误\n";
}
void input_Position(Position &p){
string s; cin>>s;
if(s=="ky"||s=="科员") p=ky;
else if(s=="fk"||s=="副科") p=fk;
else if(s=="zk"||s=="正科") p=zk;
else if(s=="fc"||s=="副处") p=fc;
else if(s=="zc"||s=="正处") p=zc;
else if(s=="ft"||s=="副厅") p=ft;
else if(s=="zt"||s=="正厅") p=zt;
else if(s=="") p=NUll;
else cout<<"输入有误\n";
}
Person::Person(int by,int bm,int bd,int wy,int wm,int wd,char *n,bool s,int a):birthday(by,bm,bd),work_time(wy,wm,wd){ //基类的构造函数
ID=++CUR_ID;
name=n;
sex=s;
age=a;
}
void Person::show(){
cout<<"工号:"<<ID<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"出生日期:";
birthday.show();
cout<<"性别:";
if(sex)
cout<<"男"<<endl;
else
cout<<"女"<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"入伍时间:";
work_time.show();
}
/*
bool Person::operator==(const Admin_tea &at)const
{
if(ID==at.ID) return true;
else return false;
}
bool Person::operator<(const Admin_tea &)const;
{if(ID<at.ID) return true;
else return false;
}
*/
Teacher::Teacher(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Title t):Person(by,bm,bd,wy,wm,wd,n,s,a){
title=t;
switch(title){
case 1: wage=5000; break;
case 2: wage=4500; break;
case 3: wage=4000; break;
case 4: wage=3500; break;
case 5: wage=3000; break;
default: wage=1500;
}
}
void Teacher::show(){
Person::show();
cout<<"职称: ";
Display_Title(title);
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
Administrator::Administrator(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Position p):Person(by,bm,bd,wy,wm,wd,n,s,a){
position=p;
switch(position){
case 1: wage=3000; break;
case 2: wage=3500; break;
case 3: wage=4000; break;
case 4: wage=4500; break;
case 5: wage=5000; break;
case 6: wage=5500; break;
case 7: wage=6000; break;
case 8: wage=1000; break;
default: wage=1500;
}
}
void Administrator::show(){
Person::show();
cout<<"职务: "; Display_Position(position);
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
Admin_tea::Admin_tea(int by,int bm,int bd ,int wy,int wm,int wd,char *n,bool s,int a,Title t,Position p)
:Person(by,bm,bd,wy,wm,wd,n,s,a),Teacher(by,bm,bd,wy,wm,wd,n,s,a,t),Administrator(by,bm,bd,wy,wm,wd,n,s,a,p){
switch(position){
case 1: wage=Teacher::wage+300; break;
case 2: wage=Teacher::wage+600; break;
case 3: wage=Teacher::wage+900; break;
case 4: wage=Teacher::wage+1200; break;
case 5: wage=Teacher::wage+1500; break;
case 6: wage=Teacher::wage+1800; break;
case 7: wage=Teacher::wage+2100; break;
case 8: wage=Teacher::wage;
}
}
void Admin_tea::show(){
Person::show();
if(position==NUll) {cout<<"职称:"; Display_Title(title);}
if(title==Null) {cout<<"职务级别:"; Display_Position(position);};
cout<<"工资: "<<wage<<endl;
cout<<endl;
}
void Person::input(){
string xb;
cout << "工号:"<<ID<<endl;
cout<<"姓名:"; cin>>name;
cout<<"出生日期:"; cin>>birthday;
cout<<"性别:"; cin>>xb; if(xb=="男") sex=true; else sex=false;
cout<<"年龄:"; cin>>age;
cout<<"入伍时间:"; cin>>work_time;
}
void Teacher::input(){
Person::input();
cout<<"职称:"; input_Title(title);
cout<<"工资:"<<wage<<endl;
}
void Administrator::input(){
Person::input();
cout<<"职务级别:"; input_Position(position);
cout<<"工资:"<<wage<<endl;
}
void Admin_tea::input(){
Teacher::input();
cout<<"职务级别:"; input_Position(position);
cout<<"工资:"<<wage<<endl;
}
/*
friend ostream& operator<<(ostream& osObject, const Person *per)
{ per->show();
}
*/
[解决办法]
main.cpp
[解决办法]
56
[解决办法]
error C2001: 常量中有换行符
[解决办法]
main.cpp
[解决办法]
79
[解决办法]
error C2059: 语法错误:“}”
[解决办法]
main.cpp
[解决办法]
84
[解决办法]
error C2001: 常量中有换行符
[解决办法]
main.cpp
[解决办法]
91
[解决办法]
error C2958: 左 圆括号“(”(在“r:\11\df\main.cpp(84)”中找到)未能正确匹配
[解决办法]
main.cpp
[解决办法]
96
[解决办法]
error C2001: 常量中有换行符
[解决办法]
main.cpp
[解决办法]
103
[解决办法]
error C2958: 左 圆括号“(”(在“r:\11\df\main.cpp(96)”中找到)未能正确匹配
[解决办法]
main.cpp
[解决办法]
106
[解决办法]
error C2059: 语法错误:“public”
------解决方案--------------------
main.cpp
[解决办法]
107
[解决办法]
error C2143: 语法错误 : 缺少“)”(在“{”的前面)
[解决办法]
main.cpp
[解决办法]
109
[解决办法]
error C2001: 常量中有换行符
[解决办法]
main.cpp
[解决办法]
126
[解决办法]
error C2958: 左 圆括号“(”(在“r:\11\df\main.cpp(109)”中找到)未能正确匹配
[解决办法]
main.cpp
[解决办法]
126
[解决办法]
error C2969: 语法错误:“;”: 成员函数定义应以“}”结尾
[解决办法]
main.cpp
[解决办法]
132
[解决办法]
fatal error C1083: 无法打开包括文件:“person.h”: No such file or directory
[解决办法]
[解决办法]
=== 已完成构建: 12 errors, 0 warnings (0 minutes, 0 seconds) ===
[解决办法]
不能编译,提示常量中有换行符
Person(int by = 2010, int bm = 8, int bd = 30, int wy = 1985, int wm = 10, int wd = 1, char* n = "李小军", bool s = true, int a = 25);
[解决办法]
char *n="李小军";
n是常量。