错误LNK2019 - 不确定如何修复(1个未解析的外部)

时间:2013-04-20 19:14:25

标签: c++ lnk2019

我差不多完成了这个程序,但是我收到的错误是我不确定如何处理。我已经寻找其他解决方案,但似乎没有任何帮助

我得到的错误是: 错误LNK2019:未解析的外部符号“void __cdecl deposit(class customer * const,int)”(?deposit @@ YAXQAVcustomer @@ H @ Z)在函数_main中引用 C:\ Users \ D \ Desktop \ Programs \ Project 3 \ DProject3 \ Debug \ DProject3.exe:致命错误LNK1120:1未解析的外部

它似乎与存款功能有关,但是我试过无所事事,如果有人可以提供帮助我会非常感激,我有3个文件用于此项目

标题

#ifndef CUSTOMER_H
#define CUSTOMER_H

#include <string>

struct Date
{
int Day;
int Month;
int Year;
};

struct Name
{
std::string first_name;
std::string middle_name;
std::string last_name;
};

class customer
{ 
   private:
Date birth_date;
    Name name;
    float balance_saving, balance_checking, initial_saving, initial_checking, amount, account_type;

   public:
    customer(); //Customer constructor
    customer(Date birth_date, Name  name, float initial_saving, float initial_checking); // Customer constructor with info
    void withdraw(float amount, int account_type);
    void deposit(float amount, int account_type);
    float check_balance_saving();  // Print out the savings balance on screen
    float check_balance_checking();  // Print out the checking balance on screen
    void setDate(int Day, int Month, int Year);
    Date getDate();
    void setName(std::string first_name, std::string middle_name, std::string last_name);
    Name getName();
    void setSaving(float initial_saving);
    void setChecking(float initial_checking);
};

#endif

实施档案

#include "customer.h"

//Contructor without info / Default info
customer::customer()
{
birth_date.Day = 01;
birth_date.Month = 01;
birth_date.Year = 1901;
name.first_name = "N/A";
name.middle_name = "N/A";
name.last_name = "N/A";
balance_saving = 0;
balance_checking = 0;
}

// Constructor with user input data
customer::customer(Date DMY, Name FML, float initSav, float initCheck)
{
birth_date = DMY;
name = FML;
initial_saving = initSav;
initial_checking = initCheck;
}

void customer::withdraw(float amtW, int accW)
{
amount = amtW;
account_type = accW;
}

void customer::deposit(float amtD, int accD)
{
amount = amtD;
account_type = accD;
}

float customer::check_balance_saving()
{
return initial_checking;
}

float customer::check_balance_checking()
{
return initial_checking;
}

void customer::setDate(int Day, int Month, int Year)
{
birth_date.Day = Day;
birth_date.Month = Month;
birth_date.Year = Year;
}

Date customer::getDate()
{
return birth_date;
}

void customer::setName(std::string First, std::string Middle, std::string Last)
{
name.first_name = First;
name.middle_name = Middle;
name.last_name = Last;
}

Name customer::getName()
{
return name;
}

void customer::setSaving(float setSav)
{
initial_saving = setSav;
}

void customer::setChecking(float setCheck)
{
initial_checking = setCheck;
}

主要

#include "customer.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

//Function prototypes
void withdraw (customer[], int);
void deposit (customer[], int);
void checkBal (customer[], int);
void newAccountFile (customer[], int);

int main ()
{
customer custInfo[49]; //Creates the customer array for info to be stored in
int customerAmt = 0; //Keeps track of the amount of customers in the array

ifstream customerfile ("account.dat"); //Open existing customer file
while (customerAmt < 2) //Loop to read the data from the existing file
{
    int D, M, Y; // Birth day, month, year
    string FN, MN, LN; //First name, middle name, last name
    float Save, Check; //Savings & Checking initial amount

    customerfile >> D;
    customerfile >> M;
    customerfile >> Y;
    customerfile >> FN;
    customerfile >> MN;
    customerfile >> LN;
    customerfile >> Save;
    customerfile >> Check;

    custInfo[customerAmt].setDate(D, M, Y);
    custInfo[customerAmt].setName(FN, MN, LN);
    custInfo[customerAmt].setSaving(Save);
    custInfo[customerAmt].setChecking(Check);

    customerAmt++;
}
customerfile.close(); //Close customer file and end file reading

//Variables for the User menu
int accountNumber, option, D1, M1, Y1;
string FN1, MN1, LN1;
float Save1, Check1;

//Loop used for User menu
do
{
    cout << "1. withdraw" << endl;
    cout << endl;
    cout << "2. Deposit" << endl;
    cout << endl;
    cout << "3. Check Balances" << endl;
    cout << endl;
    cout << "4. Create a New Account" << endl;
    cout << endl;
    cout << "0. Exit" << endl;
    cin >> option;

    if (option == 1) // Uses withdraw function
    {
        cout << "Enter the account number: ";
        cin >> accountNumber;
        withdraw(custInfo, accountNumber);
    }

    else if (option == 2) // Uses deposit function
    {
        cout << "Enter the account number: " << endl;
        cin >> accountNumber;
        deposit(custInfo, accountNumber);
    }

    else if (option == 3) // Uses check balance function
    {
        cout << "Enter the account number: " << endl;
        cin >> accountNumber;
        checkBal(custInfo, accountNumber);
    }

    else if (option == 4) //Option to handle creating a new account
    {
        cout << "Enter the new account information, starting with birth info: " << endl;
        cin >> D1 >> M1 >> Y1;
        custInfo[customerAmt].setDate(D1, M1, Y1);
        cout << endl;
        cout << "Enter the new customer's full name: " << endl;
        cin >> FN1 >> MN1 >> LN1;
        custInfo[customerAmt].setName(FN1, MN1, LN1);
        cout << endl;
        cout << "Enter the inital savings balance: " << endl;
        cin >> Save1;
        custInfo[customerAmt].setSaving(Save1);
        cout << endl;
        cout << "Enter the initial checking balance: " << endl;
        cin >> Check1;
        custInfo[customerAmt].setChecking(Check1);

        customerAmt++;
    }


}while (option != 0);

newAccountFile(custInfo, customerAmt); // Creates new updated account info file

system ("pause");
return 0;
}

void withdraw(customer custInfo[], int number)
{
float withdrawAmount;
int optionWit;
float tempSave;
float tempCheck;

cout << "1. Withdraw from savings" << endl;
cout << endl;
cout << "2. Withdraw from checking" << endl;
cin >> optionWit;
cout << "Enter the amount to be withdrawn: ";
cin >> withdrawAmount;

if (optionWit == 1)
{
    tempSave = custInfo[number].check_balance_saving() - withdrawAmount;
    custInfo[number].setSaving(tempSave);
}

else if (optionWit == 2)
{
    tempCheck = custInfo[number].check_balance_checking() - withdrawAmount;
    custInfo[number].setChecking(tempCheck);
}
}

void desposit(customer custInfo[], int number)
{
float depositAmount;
int optionDep;
float tempSave;
float tempCheck;

cout << "1. Deposit to savings" << endl;
cout << endl;
cout << "2. Deposit to checking" << endl;
cin >> optionDep;
cout << "Enter the amount to be deposited: ";
cin >> depositAmount;

if (optionDep == 1)
{
    tempSave = custInfo[number].check_balance_saving() + depositAmount;
    custInfo[number].setSaving(tempSave);
}

else if (optionDep == 2)
{
    tempCheck = custInfo[number].check_balance_checking() + depositAmount;
    custInfo[number].setChecking(tempCheck);
}

}

void checkBal(customer custInfo[], int number)
{
int optionBal;
cout << "1. Check savings balance" << endl;
cout << endl;
cout << "2. Check checking balance" << endl;
cin >> optionBal;

if (optionBal == 1)
{
    cout << "Current savings balance is: " << custInfo[number].check_balance_saving() << endl;
}

else if (optionBal == 2)
{
    cout << "Current checking balance is: " << custInfo[number].check_balance_checking() << endl;
}
}

void newAccountFile(customer custInfo[], int size)
{
int i;
Date tempDate;
Name tempName;
ofstream newAccountStorage;
newAccountStorage.open ("updated_account.dat"); //Opens new file for updated account info

for (i = 0; i < size; i++);
{
    tempDate = custInfo[i].getDate();
    tempName = custInfo[i].getName();
    newAccountStorage << tempDate.Day << endl;
    newAccountStorage << tempDate.Month << endl;
    newAccountStorage << tempDate.Year << endl;
    newAccountStorage << tempName.first_name << endl;
    newAccountStorage << tempName.middle_name << endl;
    newAccountStorage << tempName.last_name << endl;
    newAccountStorage << custInfo[i].check_balance_saving() << endl;
    newAccountStorage << custInfo[i].check_balance_checking() << endl;
}

newAccountStorage.close(); //Closes the file after writing new information
}

1 个答案:

答案 0 :(得分:4)

您的功能定义中有错误打印

void desposit(customer custInfo[], int number)
     ^^^^