帮我看看这个错误是什么意思??

chaoyueheike 2009-06-12 10:16:04
ext.obj : error LNK2001: unresolved external symbol "public: __thiscall employee::~employee(void)" (??1employee@@QAE@XZ)
text.obj : error LNK2001: unresolved external symbol "public: int __thiscall employee::getindividualempno(void)" (?getindividualempno@employee@@QAEHXZ)
text.obj : error LNK2001: unresolved external symbol "public: int __thiscall employee::getgrade(void)" (?getgrade@employee@@QAEHXZ)
text.obj : error LNK2001: unresolved external symbol "public: float __thiscall employee::getaccumpay(void)" (?getaccumpay@employee@@QAEMXZ)
text.obj : error LNK2001: unresolved external symbol "public: void __thiscall employee::setaccumpay(float)" (?setaccumpay@employee@@QAEXM@Z)
text.obj : error LNK2001: unresolved external symbol "public: void __thiscall employee::promote(int)" (?promote@employee@@QAEXH@Z)
text.obj : error LNK2001: unresolved external symbol "public: __thiscall employee::employee(void)" (??0employee@@QAE@XZ)
Debug/text.exe : fatal error LNK1120: 7 unresolved externals
编译的时候它就一直这样报错,下面是这个三个文件

employee.h
class employee
{
protected:
int individualempno;
int grade;
float accumpay;
static int employeeno;
public:
employee();
~employee();
void promote(int);
void setaccumpay(float);
int getindividualempno();
int getgrade();
float getaccumpay();
};

text.cpp
#include<iostream>
#include"employee.h"
using namespace std;
int main()
{
employee ml;
employee tl;
employee sml;
employee sl;
cout<<"请输入下一个雇员的月薪:";
float pa;
cin>>pa;
ml.promote(3);
ml.setaccumpay(pa);

cout<<"请输入下一个雇员的月薪:";
cin>>pa;
tl.promote(2);
tl.setaccumpay(pa);

cout<<"请输入下一个雇员的月薪:";
cin>>pa;
sml.promote(2);
sml.setaccumpay(pa);

cout<<"请输入下一个雇员的月薪:";
cin>>pa;
sl.setaccumpay(pa);

//显示ml信息
cout<<"编号"<<ml.getindividualempno()<<"级别为"<<ml.getgrade()<<"级,本月工资"<<ml.getaccumpay()<<endl;

//显示tl信息
cout<<"编号"<<tl.getindividualempno()<<"级别为"<<tl.getgrade()<<"级,本月工资"<<tl.getaccumpay()<<endl;

//显示sml信息
cout<<"编号"<<sml.getindividualempno()<<"级别为"<<sml.getgrade()<<"级,本月工资"<<sml.getaccumpay()<<endl;

//显示sl信息
cout<<"编号"<<sl.getindividualempno()<<"级别为"<<sl.getgrade()<<"级,本月工资"<<sl.getaccumpay()<<endl;
}
employee.cpp
#include<iostream>
#include"employee.h"
using namespace std;
int employee::employeeno=1000;
employee::employee()
{
individualempno=employeeno++;
grade=1;
accumpay=0.0;
}
employee::~employee(){}
void employee::promote(int increment)
{grade+=increment;}
void employee::setaccumpay(float pa)
{accumpay=pa;}
int employee::getindividualempno()
{return individualempno;}
int employee::getgrade()
{return grade;}
float employee::getaccumpay()
{return accumpay;}
写成一个文件就没错,三个编译的时候像我代码写的将一些头文间包含进去却报出上面那样的错,请问下这个是什么问题?????
...全文
103 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
WenRick 2009-06-12
  • 打赏
  • 举报
回复
你的employee.cpp文件 有没有包含到工程中来? 这个文件没有被编译。所以link找不到你的类方法的实现
http://topic.csdn.net/u/20090610/10/18f176d6-87cb-462f-8b50-ae466781fa49.html
引用:这文章7楼 晨星说的 :这是正解
编译器不管头文件的,头文件只是用来被cpp文件包含的,被包含之后,它就成了那个cpp文件的一部分了,而编译器只编译.cpp文件,不会去单独编译一个头文件的。
编译器这样做之后,针对每个编译过的cpp文件生成一个obj文件。
然后连接器把所有这些obj文件连接成一个程序,或能是exe或dll(或做成静态的lib)。如果在连接的过程中,有些实体(比如变量或函数)找不到定义,则会报link错误。
dinjay 2009-06-12
  • 打赏
  • 举报
回复
clean一下然后再试试
goodname 2009-06-12
  • 打赏
  • 举报
回复
你可以将临时文件都删掉,就是那些obj文件。

然后重新编译。
goodname 2009-06-12
  • 打赏
  • 举报
回复
代码应该没问题,

你的工程是怎么建立的,用的什么编译器,这个工程还做过别的事情吗。
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
定义了的啊就这句话嘛
int employee::employeeno=1000;
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
不是吧,你行,我的不行,你是写成三个文件的吗,你说的把什么employee.cpp去掉??我里面好像没调用到employee.cpp这个文件啊??
pengzhixi 2009-06-12
  • 打赏
  • 举报
回复
你的静态成员没定义的.要在类外面再定义一次.
点墨 2009-06-12
  • 打赏
  • 举报
回复
试了试,没错呀。
如果把employee.cpp去掉,就会出现楼主的问题。
就这样。
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
哦,上面有两个头文件就不用了,写错了,反正是写成一个源程序就行,为什么呢???
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
//employee.h文件class employee
{
protected:
int individualempno;
int grade;
float accumpay;
static int employeeno;
public:
employee();
~employee();
void promote(int);
void setaccumpay(float);
int getindividualempno();
int getgrade();
float getaccumpay();
};
//employee.cpp文件
#include <iostream>
#include"employee.h"
using namespace std;
int employee::employeeno=1000;
employee::employee()
{
individualempno=employeeno++;
grade=1;
accumpay=0.0;
}
employee::~employee(){}
void employee::promote(int increment)
{grade+=increment;}
void employee::setaccumpay(float pa)
{accumpay=pa;}
int employee::getindividualempno()
{return individualempno;}
int employee::getgrade()
{return grade;}
float employee::getaccumpay()
{return accumpay;}
text.cpp 文件
#include <iostream>
#include"employee.h"
using namespace std;
int main()
{
employee ml;
employee tl;
employee sml;
employee sl;
cout < <"请输入下一个雇员的月薪:";
float pa;
cin>>pa;
ml.promote(3);
ml.setaccumpay(pa);

cout < <"请输入下一个雇员的月薪:";
cin>>pa;
tl.promote(2);
这样的就行
tl.setaccumpay(pa);

cout < <"请输入下一个雇员的月薪:";
cin>>pa;
sml.promote(2);
sml.setaccumpay(pa);

cout < <"请输入下一个雇员的月薪:";
cin>>pa;
sl.setaccumpay(pa);

//显示ml信息
cout < <"编号" < <ml.getindividualempno() < <"级别为" < <ml.getgrade() < <"级,本月工资" < <ml.getaccumpay() < <endl;

//显示tl信息
cout < <"编号" < <tl.getindividualempno() < <"级别为" < <tl.getgrade() < <"级,本月工资" < <tl.getaccumpay() < <endl;

//显示sml信息
cout < <"编号" < <sml.getindividualempno() < <"级别为" < <sml.getgrade() < <"级,本月工资" < <sml.getaccumpay() < <endl;

//显示sl信息
cout < <"编号" < <sl.getindividualempno() < <"级别为" < <sl.getgrade() < <"级,本月工资" < <sl.getaccumpay() < <endl;
}
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
三个啊一个是employee.h
一个是employee.cpp
还有个是text.cpp 上面每个源程序前都标明了的啊。主函数是text.cpp
goodname 2009-06-12
  • 打赏
  • 举报
回复
你的工程内就这2个源文件吗

ext.cpp?是什么?
chaoyueheike 2009-06-12
  • 打赏
  • 举报
回复
是啊
goodname 2009-06-12
  • 打赏
  • 举报
回复
employee.cpp 是否也在你的项目工程中呢?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧