引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误



我正在尝试使用类构造函数设置本金金额并开始收到此错误。

LNK2019未解析的外部符号"公共:__thiscall债券::债券(双精度,双精度,双倍,字符("(??0Bond@@QAE@NNND@Z( 在函数 _main 中引用

在下面附上我的代码。如果有人能指出错误是什么,将不胜感激。提前谢谢。

// bond.cpp file
Bond::Bond(double prin, double rat, double yTM, char typ)
{
cout << "I have created a tailored Bond" << endl;
setPrincipal(prin);
}
void Bond::setPrincipal(double prin)
{
principal = prin;
}
double Bond::getPrincipal()
{
return principal;
}
//main.cpp 
int main(int argc, const char* argv[])
{
Bond complexBond(999.99, 0.05, 10, 'S');
cout << "complexBond.getPrincipal(): " << complexBond.getPrincipal() << endl;
return 0; 
}
//bond.h header file
class Bond
{
public:
Bond();
Bond(double, double, double, char);
void setPrincipal(double);
double getPrincipal();
private:
double principal;
double rate;
double yearsToMaturity;
char paymentType; // 'A'nnual, 'S'emi-Annual, 'Q'uarterly
};

LNK2019通常是由两件事引起的:

  1. 未编译包含符号定义的源文件
  2. 使用了函数,但参数的类型或数量与函数定义不匹配。

当我复制您的代码并运行它时,错误不会出现。所以,我想bond.h不包括在bond.cpp中。您只需在债券.cpp的顶部添加#include "bond.h"

如果解决方案不能解决您的问题,您可以参考Microsoft文档

最新更新