﻿
#include <iostream>
using namespace std;

// deklaracja klasy Portfel
class Portfel;

// klasa zaprzyjaźniona z klasą Portfel
class Przyjaciel {
public:
    void pozyczKase(Portfel& portfel);
    void dodajKase(Portfel& portfel);
};


class Portfel {
private:
    int kasa;
public:
    // konstrultor domyślny
    Portfel():kasa(1000) {}; 
    // deklaracja klasy Przyjaciel zaprzyjaźnionej z klasą Portfel
    // klasa Przyjaciel ma dostęp do prywatnych i chronionych członków klasy Portfel
    friend class Przyjaciel;
    void pokazKase() { cout << kasa << endl; };
};


int main()
{
    cout << "Pożyczka dla przyjaciela\n\n";
    Portfel portfel;
    Przyjaciel przyjaciel;
    // wywołania funkcji zaprzyjaźnionych
    przyjaciel.pozyczKase(portfel); 
    przyjaciel.dodajKase(portfel);
    cout << "w portfelu zostało: ";
    portfel.pokazKase();
}

void Przyjaciel::pozyczKase(Portfel& p)
{
    cout << "masz w portfelu : " << p.kasa << endl;
    cout << "pożyczam 100 zł" << endl;
    p.kasa -= 100;
    cout << "dzieki!" << endl;
}

void Przyjaciel::dodajKase(Portfel& p)
{
    cout << "masz w portfelu : " << p.kasa << endl;
    cout << "dokładam 1 zł" << endl;
    p.kasa += 1;
}




