
//
// Przykładowy kod z rozdziału 6.3.3 "Implementowanie tokenów" książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include "std_lib_facilities.h"

//------------------------------------------------------------------------------

class Token {        // Bardzo prosty typ zdefiniowany przez użytkownika.
public:
    char kind;
    double value;
};

//------------------------------------------------------------------------------

int main()
try
{
    Token t;         // Zmienna t jest typu Token.
    t.kind = '+';    // Zmienna t reprezentuje znak +.
    Token t2;        // Zmienna t2 jest innym obiektem typu Token.
    t2.kind = '8';   // Cyfra 8 oznacza rodzaj (kind) tokenu będący liczbą.
    t2.value = 3.14;

    Token tt = t;    // Inicjacja kopii
    if (tt.kind != t.kind) error("To niemożliwe!");
    t = t2;          // przypisanie
    cout << t.value; // wydrukuje 3.14
}
catch (exception& e) {
    cerr << "Błąd: " << e.what() << '\n'; 
    return 1;
}
catch (...) {
    cerr << "Nieznany wyjątek!\n"; 
    return 2;
}

//------------------------------------------------------------------------------
