未解决的外部,未解决的外部符号LNK 1120

时间:2013-11-17 22:48:35

标签: c++

我正在制作一个银行帐户计划,无法弄清楚为什么我一直收到以下错误:

  

错误5错误LNK1120:1个未解析的外部

我有一个超类BankAccount和一个子类检查帐户。

银行帐户.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;

};

CheckingAccount.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;
}

错误信息是:

  

错误4错误LNK2019:未解析的外部符号“类   CheckingAccount __cdecl test(void)“(?test @@ YA?AVCheckingAccount @@ XZ)   在函数_main C中引用:... Main.obj Assignment1Part3A

2 个答案:

答案 0 :(得分:2)

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

CheckingAccount test();

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

按如下方式进行:

CheckingAccount test{};

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

test.getBalance();而非test().getBalance();

答案 1 :(得分:0)

错误告诉你究竟是什么问题。它在你的主要:test().getBalance();。您正在调用test,因为它是一个函数,但它是一个对象名称。它应该只是test.getBalance()。前一行也应该没有(),但它们应该没问题,因为编译器在这种情况下将它们视为构造函数。