#include <iostream>

#include "cashregister.h"
#include "account.h"

using namespace std;

int main()
{
   // Wskaźnik do obiektu alokowanego na stercie
   CashRegister* register_pointer = new CashRegister;

   // Dwa wskaźniki do tego samego obiektu
   BankAccount* lisas_account_pointer = new BankAccount(1000);
   BankAccount* joes_account_pointer = lisas_account_pointer;

   // Wywoływanie funkcji składowej na wskaźnikach

   // Trudniejszy sposób
   (*register_pointer).add_item(1.95);

   // Łatwiejszy sposób
   register_pointer->add_item(1.95);

   cout << "Łączna wartość transakcji: " << register_pointer->get_total() << endl;

   // Saldo na koncie dostępne przez każdy ze wskaźników
   // do współdzielonego obiektu jest takie samo
   cout << "Saldo Lisy: "
      << lisas_account_pointer->get_balance() << endl;
   cout << "Saldo Joego: "
      << joes_account_pointer->get_balance() << endl;

   // Usunięcie zaalokowanych obiektów
   delete register_pointer;
   delete lisas_account_pointer;
}

