重载的构造函数的未解决的外部符号错误

时间:2014-06-27 13:24:53

标签: c++ oop

实际上我一直在搜索我的错误,我找到了大量的解决方案,但他们无法解决我的问题,可能这很容易,但我无法处理......

/* header */
class EmployeeRegister
{
private:
    EmpReg *Emp;
public:
    EmployeeRegister(int,int);
};


/* cpp file*/
EmployeeRegister::EmployeeRegister(int a,int b)
{
    cout << "Result  : " << a+b << endl;
}


/* in main file*/
EmployeeRegister Sub(1,1);

当我这样做或类似的事情时,我得到:

main.obj:-1: error: LNK2001: unresolved external symbol "public: 
   __thiscall EmployeeRegister::EmployeeRegister(int,int)" 
   (??0EmployeeRegister@@QAE@HH@Z)

实际上我确定这很容易,但我错过了什么?

编辑:它已修复,链接器无法找到我的.cpp文件。

2 个答案:

答案 0 :(得分:2)

确保您的非主.cpp文件在项目中(或在链接器命令行中)列出,以便它可以与您的main.cpp正确链接

答案 1 :(得分:1)

因为你是新手,

请提及您如何构建项目。 您应该编译main.cpp和EmployeeRegister.cpp并链接main.o和EmployeeRegister.o文件。

g++ -c Main.cpp g++ -c EmployeeRegister.cpp g++ -o binaryname Main.o EmployeeRegister.o