简单的程序不会编译

时间:2011-04-09 23:55:53

标签: c++

请查看我的代码。我在Visual Studio中得到的错误是

error LNK2019: unresolved external symbol "public: int __thiscall Employee::getId(void)" (?getId@Employee@@QAEHXZ) referenced in function _main

Employee.h

#ifndef EMPLOYEES
#define EMPLOYEES

#include <string>
#include <iostream>
using namespace std;

class Employee
{
private:
    string name;
    int id;
public:
    Employee();
    Employee(string nm, int idd);
    string getName();
    int getId();
};

#endif

Employee.cpp

#include "Employee.h"
#include <string>

Employee::Employee()
{
    name="unknown";
    id=0;
}

Employee::Employee(string nm, int idd)
{
    name=nm;
    id=idd;
}

string Employee::getName()
{
    return name;
}

int Employee::getId()
{
    return id;
}

驱动器

#include <iostream>
#include <string>
#include "Employee.h"
using namespace std;

int main()
{   
    Employee bob("bob", 3);
    cout << bob.getId();
}

2 个答案:

答案 0 :(得分:2)

您似乎忘了将两个文件链接在一起。确保将Employee.cpp和main.cpp文件链接在一起。它们是否被添加到同一个VS项目中?

编辑:查看this link。它已经过时了,但看起来你做了制作一个包含所有文件的项目。它们应该自动链接。

答案 1 :(得分:1)

看起来您没有链接Employee.o,Employee.cpp的结果,或直接添加Employee.cpp以使用main.cpp进行编译

最终链接器看到main,但找不到Employee.cpp中定义的内容