c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo相关的知识,希望对你有一定的参考价值。

在连接中出现了这4个错误

程序如下
#include "StdAfx.h"
#include "Emp.h"

int main(int argc, char* argv[])

char*name=NULL;
short age=0;
float salary=0;
name=new char[30];
CEmp emp[3];
for(int i=0;i<3;i++)

cout<<"输入第"<<i+1<<"员工的信息"<<endl;
cout<<"姓名";
cin>>name;
cout<<"年龄";
cin>>age;
cout<<"工资";
cin>>salary;
emp[i].set_name(name);
emp[i].set_age(age);
emp[i].set_salary(salary);
emp[i].print();


return 0;

#include "StdAfx.h"
#include "Emp.h"

CEmp::CEmp()

name=0;
age=0;
salary=0.0;


void CEmp::set_name(char*n)

name=new char[strlen(n)+1];
strcpy(name,n);

void CEmp::print()

cout<<"Name:"<<name;
cout<<"Age:"<<age;
cout<<"Salary:"<<salary<<endl;


CEmp::~CEmp()



class CEmp

public:
CEmp();
virtual ~CEmp()delete[]name;
void set_name(char*);
void set_age(short a)age=a;
void set_salary(float s)salary=s;
void print();
private:
char*name;
short age;
float salary;

;
是按照书上的例子一步步输入的,不知道为什么到了最后连接的时候就出问题了,谢谢

class CEmp

public:
CEmp();
virtual ~CEmp()delete[]name;
void set_name(char*);
void set_age(short a)age=a;
void set_salary(float s)salary=s;
void print();
private:
char*name;
short age;
float salary;
;
///////////////////////////////////////////////////////////////////////////////////////////
这个类应该放到Emp.h头文件里面,然后把剩余代码放Emp.cpp源文件里面,另外要把
CEmp::~CEmp()



去掉,因为类里面已经定义了析构函数,没其他大问题了,编译能够通过,能够正常运行追问

est.obj : error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)" (?print@CEmp@@QAEXXZ)
test.obj : error LNK2001: unresolved external symbol "public: void __thiscall CEmp::set_name(char *)" (?set_name@CEmp@@QAEXPAD@Z)
Debug/test.exe : fatal error LNK1120: 3 unresolved externals

追答

我不知道你3个文件是怎么写的,如果写成一个文件是没问题的,在VS2005,VC编译都能运行
#include
#include
using namespace std;
class CEmp

public:
CEmp();
virtual ~CEmp()delete[]name;
void set_name(char*);
void set_age(short a)age=a;
void set_salary(float s)salary=s;
void print();
private:
char*name;
short age;
float salary;

;

CEmp::CEmp()

name=0;
age=0;
salary=0.0;


void CEmp::set_name(char*n)

name=new char[strlen(n)+1];
strcpy(name,n);

void CEmp::print()

cout>name;
cout>age;
cout>salary;
emp[i].set_name(name);
emp[i].set_age(age);
emp[i].set_salary(salary);
emp[i].print();


return 0;

参考技术A 是不是电脑的问题,你可以换一台电脑试试。

以上是关于c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo的主要内容,如果未能解决你的问题,请参考以下文章

c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo

c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

C++静态成员变量必须在类的定义之外进行声明 (error LNK2001: unresolved external symbol)

C++静态成员变量必须在类的定义之外进行声明 (error LNK2001: unresolved external symbol)

C++静态成员变量必须在类的定义之外进行声明 (error LNK2001: unresolved external symbol)

错误 1 error LNK2001: 无法解析的外部符号 _mainCRTStartup 错误 2 error LNK1120: 1 个无法解析的外部命