
//
// To jest przykładowy kod z podrozdziału 14.2.4 „Kopiowanie i zmienność” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include "Simple_window.h"    // Dołącza naszą bibliotekę okien.
#include "Graph.h"            // Dołącza do narzędzi graficznych.

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

void my_fct(const Open_polyline& op, const Circle& c)
{
    //Open_polyline op2 = op; // Błąd: konstruktor kopiujący klasy Shape jest prywatny.
    vector<Shape> v;
    //v.push_back(c);         // Błąd: konstruktor kopiujący klasy Shape jest prywatny.
    // ...
    //op = op2;               // Błąd: operacja przypisania klasy Shape jest prywatna.
}

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

int main()
try
{
    Point p;
    Marked_polyline mp("x");
    Circle c(p,10);
    my_fct(mp,c);             // Argument Open_polyline staje się referencją do Marked_polyline.
}
catch(exception& e) {
    // Raport o błędzie.
    return 1;
}
catch(...) {
    // Raport o błędzie.
    return 2;
}

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