Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
链接器错误-未定义对“的引用”;名称空间::类::函数(); 我从专业C++ C++中学习WROX _C++ - Fatal编程技术网

链接器错误-未定义对“的引用”;名称空间::类::函数(); 我从专业C++ C++中学习WROX

链接器错误-未定义对“的引用”;名称空间::类::函数(); 我从专业C++ C++中学习WROX ,c++,C++,下面是一个简单的员工记录程序的3个文件 1.雇员 // Employee.h #include <iostream> namespace Records { const int kDefaultStartingSalary = 30000; class Employee { public: Employee(); void promote(int inRaiseAmount = 1000); void demote(int inDemeritAmount = 1000); void

下面是一个简单的员工记录程序的3个文件

1.雇员

// Employee.h
#include <iostream>
namespace Records {
const int kDefaultStartingSalary = 30000;
class Employee
{
public:
Employee();
void promote(int inRaiseAmount = 1000);
void demote(int inDemeritAmount = 1000);
void hire(); // Hires or rehires the employee
void fire(); // Dismisses the employee
void display(); // Outputs employee info to the console
// Accessors and setters
void setFirstName(std::string inFirstName);
std::string getFirstName();
void setLastName(std::string inLastName);
std::string getLastName();
void setEmployeeNumber(int inEmployeeNumber);
int getEmployeeNumber();
void setSalary(int inNewSalary);
int getSalary();
bool getIsHired();
private:
std::string mFirstName;
std::string mLastName;
int mEmployeeNumber;
int mSalary;
bool fHired;
};
}
//Employee.h
#包括
名称空间记录{
const int kDefaultStartingSalary=30000;
班级员工
{
公众:
雇员();
无效升级(int inRaiseAmount=1000);
无效降级(int inDemeritAmount=1000);
void hire();//雇用或重新雇用员工
void fire();//解雇员工
void display();//将员工信息输出到控制台
//存取器和设置器
void setFirstName(std::string inFirstName);
std::string getFirstName();
void setLastName(std::string inLastName);
std::string getLastName();
void setEmployeeNumber(int-inEmployeeNumber);
int getEmployeeNumber();
void setSalary(intinnewsalary);
int getSalary();
bool getIsHired();
私人:
std::字符串mFirstName;
std::字符串mLastName;
int mEmployeeNumber;
国际海事局;
布尔费雷德;
};
}
2.Employee.cpp

// Employee.cpp
#include <iostream>
#include "Employee.h"
using namespace std;
namespace Records {
Employee::Employee()
{
mFirstName = "";
mLastName = "";
mEmployeeNumber = -1;
mSalary = kDefaultStartingSalary;
fHired = false;
}
void Employee::promote(int inRaiseAmount)
{
setSalary(getSalary() + inRaiseAmount);
}
void Employee::demote(int inDemeritAmount)
{
setSalary(getSalary() - inDemeritAmount);
}
void Employee::hire()
{
fHired = true;
}
void Employee::fire()
{
fHired = false;
}
void Employee::display()
{
cout << "Employee: " << getLastName() << ", " << getFirstName() << endl;
cout << "-------------------------" << endl;
cout << (fHired ? "Current Employee" : "Former Employee") << endl;
cout << "Employee Number: " << getEmployeeNumber() << endl;
cout << "Salary: $" << getSalary() << endl;
cout << endl;
}
// Accessors and setters
void Employee::setFirstName(string inFirstName)
{
mFirstName = inFirstName;
}
string Employee::getFirstName()
{
return mFirstName;
}
void Employee::setLastName(string inLastName)
{
mLastName = inLastName;
}
string Employee::getLastName()
{
return mLastName;
}
void Employee::setEmployeeNumber(int inEmployeeNumber)
{
mEmployeeNumber = inEmployeeNumber;
}
int Employee::getEmployeeNumber()
{
return mEmployeeNumber;
}
void Employee::setSalary(int inSalary)
{
mSalary = inSalary;
}
int Employee::getSalary()
{
return mSalary;
}
bool Employee::getIsHired()
{
return fHired;
}
}
//Employee.cpp
#包括
#包括“Employee.h”
使用名称空间std;
名称空间记录{
雇员::雇员()
{
mFirstName=“”;
mLastName=“”;
mEmployeeNumber=-1;
mSalary=kDefaultStartingSalary;
fHired=假;
}
作废员工::升级(int inRaiseAmount)
{
设置薪资(getSalary()+收入总额);
}
作废员工::降级(整数索引计数)
{
setSalary(getSalary()-inderitamount);
}
void Employee::hire()
{
fHired=真;
}
void Employee::fire()
{
fHired=假;
}
void Employee::display()
{

cout您需要同时编译两个源文件,或者同时编译到目标文件并链接它们

例如

// EmployeeTest.cpp
#include <iostream>
#include <conio.h>
#include "Employee.h"
using namespace Records;
int main (int argc, char** argv)
{
std::cout <<"Testing the Employee class." << std::endl;
Employee emp;
emp.setFirstName("Marni");
emp.setLastName("Kleper");
emp.setEmployeeNumber(71);
emp.setSalary(50000);
emp.promote();
emp.promote(50);
emp.hire();
emp.display();
getch();
return 0;
}
$ gcc Employee.cpp EmployeeTest.cpp