c++ - Unresolved Externals, 未解析的外部符号 LNK 1120

标签 c++

我正在制作一个银行账户程序,但无法弄清楚为什么我不断收到以下错误:

Error 5 error LNK1120: 1 unresolved externals

我有一个父类(super class) BankAccount 和一个子类 Checking Account。

银行账户.h:

#pragma once
#include <iostream>
#include <string>
#include <vector>
using namespace std;

class BankAccount
{
public: 
    BankAccount::BankAccount();
    BankAccount::~BankAccount();
    virtual void depsoit(double money) = 0;
    virtual double withdraw(double money) = 0;
    virtual double getBalance() = 0;
    virtual void endOfMonth() = 0;

private:
    double balance;

};

银行账户.cpp

#include "BankAccount.h"
#include <iostream>
#include <vector>
using namespace std;

BankAccount::BankAccount()
{
    balance = 0;
}

BankAccount::~BankAccount()
{

}

CheckingAccount.h

#pragma once
#include "BankAccount.h"
#include <vector>
#include <iostream>
using namespace std;
class CheckingAccount :
    public BankAccount
{
public:
    CheckingAccount();
    ~CheckingAccount();
    void depsoit(double money);
    double withdraw(double request);
    double getBalance();
    void endOfMonth();
private:
    double checkingBalance=0;
    int transactionLimit = 5;
    float fee = .05;
    double fees=0;
    vector <double> feeTransactions;

};

支票账户.cpp

#include "CheckingAccount.h"
#include <iostream>
#include <vector>
using namespace std;

CheckingAccount::CheckingAccount()
{
    checkingBalance = 0;
}



CheckingAccount::~CheckingAccount()
{

}



void CheckingAccount::depsoit(double money)
{
    if (transactionLimit > 0)
    {
        transactionLimit--;
        cout << "You have " << transactionLimit << " transactions left";
        checkingBalance += money;

    }
    else
    {
        feeTransactions.push_back(money);
        cout << "Your transaction went through but you incurred a fee";
        checkingBalance += money;
    }
}
double CheckingAccount::withdraw(double request)
{
    if (checkingBalance < request)
    {
        cout << "Sorry you do not have the available funds";
        return 0.0;
    }
    else if (transactionLimit > 0)
    {
        transactionLimit--;
        cout << "You have " << transactionLimit << " transactions left";
        checkingBalance -= request;
        return request;

    }
    else
    {
        feeTransactions.push_back(request);
        cout << "Your transaction went through but you incurred a fee";
        checkingBalance -= request;
        return request;
    }

}

double CheckingAccount::getBalance()
{
    return checkingBalance;
}

void CheckingAccount::endOfMonth()
{
    for (int i = 0; i < feeTransactions.size(); i++)
    {
        fees = feeTransactions[i] * fee;
    }
    checkingBalance -= fees;
}

最后是 MAIN.CPP

#include "CheckingAccount.h"
#include <iostream>
#include <vector>

using namespace std;

int main()
{

    CheckingAccount test();
    test().getBalance();

    //system("PAUSE");
    return 1;
}

再次出现的错误信息是:

Error 4 error LNK2019: unresolved external symbol "class CheckingAccount __cdecl test(void)" (?test@@YA?AVCheckingAccount@@XZ) referenced in function _main C:...Main.obj Assignment1Part3A

最佳答案

您没有在此处声明 CheckingAccount 类型的变量:

CheckingAccount test();

您正在做的是声明一个函数测试,它返回一个 CheckingAccount 类型的对象并且不接受任何参数。

按如下方式进行:

CheckingAccount test{};

您应该按如下方式调用 getBalance:

test.getBalance(); 而不是 test().getBalance();

关于c++ - Unresolved Externals, 未解析的外部符号 LNK 1120,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037237/

相关文章:

c++ - 你能为 ContiguousIterator 写一个概念吗?

C++ 正则表达式排除双引号不起作用

c++ - 64位架构优化

c++ - C++中的逻辑异或运算符?

c++ - 如何编写在函数执行过程中收集垃圾的测试用例?

c++ - g++ 创建静态库 : could not read the symbols archive has no index

c++ - 为什么在将超出范围的值分配给变量时由编译器决定分配什么值

BloodShed Dev C++ 上的 C++ 编译器错误

c++ 如何优雅地将 c++17 并行执行与计算整数的 for 循环一起使用?

c++ - 如何输入一个字符,然后根据char的值输出一个数字序列?