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

标签 c++ visual-studio class visual-c++ constructor

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

LNK2019 未解析的外部符号“public: __thiscall Bond::Bond(double,double,double,char)”(??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通常是由两件事引起的:

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

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

    如果解决方案不能解决您的问题,您可以引用 Microsoft documents

    关于c++ - 引入参数化构造函数后显示 LNK 2019 未解析的外部符号的代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61748777/

    相关文章:

    c++ - 在 C++ 中返回指向对象指针的指针

    c++ - 编译器特定的内存初始化

    C++推断嵌套异常的类型

    Visual Studio 2017 中的 Javascript 断点

    CSS:如何显示隐藏类

    python - 类型错误 : unbound method setSize() must be called with Page instance as first argument (got classobj instance instead)

    C++ - 在不引入紧密耦合的情况下识别多态类族

    c++ - Visual Studio 2013 中的 Lua C API 堆栈可视化器/查看器

    c++ - 如何从结构数组中删除一条数据线? (带索引)

    ios - 通过扩展 UIButton 类,使用 Swift 创建自定义按钮