dispenserType.h
Kod: Zaznacz cały
//************************************************************
// Author: D.S. Malik
//
// class dispenserType
// This class specifies the members to implement a dispenser.
//************************************************************
class dispenserType
{
public:
int getNoOfItems() const;
//Function to show the number of items in the machine.
//Postcondition: The value of numberOfItems is returned.
int getCost() const;
//Function to show the cost of the item.
//Postcondition: The value of cost is returned.
void makeSale();
//Function to reduce the number of items by 1.
//Postcondition: numberOfItems--;
dispenserType(int setNoOfItems = 50, int setCost = 50);
//Constructor
//Sets the cost and number of items in the dispenser
//to the values specified by the user.
//Postcondition: numberOfItems = setNoOfItems;
// cost = setCost;
// If no value is specified for a
// parameter, then its default value is
// assigned to the corresponding member
// variable.
private:
int numberOfItems; //variable to store the number of
//items in the dispenser
int cost; //variable to store the cost of an item
};
int dispenserType::getNoOfItems() const
{
return numberOfItems;
}
int dispenserType::getCost()
{
return cost;
}
void dispenserType::makeSale()
{
numberOfItems--;
}
dispenserType::dispenserType(int setNoOfItems, int setCost)
{
if (setNoOfItems >= 0)
numberOfItems = setNoOfItems;
else
numberOfItems = 50;
if (setCost >= 0 )
cost = setCost;
else
cost = 50;
}
cashRegister.h
Kod: Zaznacz cały
// cash_register.h
class cashRegister
{
public:
int getCurrentBalance() const;
//Function to show the current amount in the cash register
//Postcondition: The value of cashOnHand is returned
void acceptAmount(int amountIn);
//Function to receive the amount deposited by
//the customer and update the amount in the register.
//Postcondition: cashOnHand += amountIn;
cashRegister(int cashIn = 500);
//Constructor
//Sets the cash in the register to a specific amount.
//Postcondition: cashOnHand = cashIn;
private:
int cashOnHand;
};
int cashRegister::getCurrentBalance() const
{
return cashOnHand;
}
void cashRegister::acceptAmount(int amountIn)
{
cashOnHand += amountIn;
}
cashRegister::cashRegister(int cashIn)
{
if (cashIn >= 0)
cashOnHand = cashIn;
else
cashOnHand = 500;
}
Kod: Zaznacz cały
//*****************************************************
// Author: D.S. Malik
//
// This program uses the classes cashRegister and
// dispenserType to implement a candy machine.
// ****************************************************
#include "stdafx.h"
#include <iostream>
#include "cashRegister.h"
#include "dispenserType.h"
using namespace std;
void showSelection();
void sellProduct(dispenserType& product,
cashRegister& pCounter);
int main()
{
cashRegister counter;
dispenserType candy(100, 50);
dispenserType chips(100, 65);
dispenserType gum(75, 45);
dispenserType cookies(100, 85);
int choice; //variable to hold the selection
showSelection();
cin >> choice;
while (choice != 9)
{
switch (choice)
{
case 1:
sellProduct(candy, counter);
break;
case 2:
sellProduct(chips, counter);
break;
case 3:
sellProduct(gum, counter);
break;
case 4:
sellProduct(cookies, counter);
break;
default:
cout << "Invalid selection." << endl;
}//end switch
showSelection();
cin >> choice;
}//end while
return 0;
}//end main
void showSelection()
{
cout << "*** Welcome to Shelly's Candy Shop ***" << endl;
cout << "To select an item, enter " << endl;
cout << "1 for Candy" << endl;
cout << "2 for Chips" << endl;
cout << "3 for Gum" << endl;
cout << "4 for Cookies" << endl;
cout << "9 to exit" << endl;
}//end showSelection
void sellProduct(dispenserType& product,
cashRegister& pCounter)
{
int amount; //variable to hold the amount entered
int amount2; //variable to hold the extra amount needed
if (product.getNoOfItems() > 0) //if the dispenser is not
//empty
{
cout << "Please deposit " << product.getCost()
<< " cents" << endl;
cin >> amount;
if (amount < product.getCost())
{
cout << "Please deposit another "
<< product.getCost()- amount
<< " cents" << endl;
cin >> amount2;
amount = amount + amount2;
}
if (amount >= product.getCost())
{
pCounter.acceptAmount(amount);
product.makeSale();
cout << "Collect your item at the bottom and "
<< "enjoy." << endl;
}
else
cout << "The amount is not enough. "
<< "Collect what you deposited." << endl;
cout << "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
<< endl << endl;
}
else
cout << "Sorry, this item is sold out." << endl;
}//end sellProduct
Mógłby ktoś wytłumaczyć skąd on się bierze / co on oznacza?1>candy_machine.obj : error LNK2028: unresolved token (0A000348) "public: void __thiscall dispenserType::makeSale(void)" (?makeSale@dispenserType@@$$FQAEXXZ) referenced in function "void __cdecl sellProduct(class dispenserType &,class cashRegister &)" (?sellProduct@@$$FYAXAAVdispenserType@@AAVcashRegister@@@Z)