#include <iostream>
using namespace std;
#define BLEDNY_ZNAK
class OgolnyWyjatek
{
public:
OgolnyWyjatek()
{ cout << "kOW" << endl; }
~OgolnyWyjatek()
{ cout << "dOW" << endl; }
void wyswietl()
{ cout << "OW" << endl; }
};
class WyjatekInt : public OgolnyWyjatek
{
public:
WyjatekInt(int wartosc): wartosc(wartosc)
{ cout << "kWI" << endl; }
WyjatekInt(const WyjatekInt &w)
{ cout << "kkWI" << endl; }
~WyjatekInt()
{ cout << "dWI" << endl; }
void wyswietl()
{ cout << wartosc << endl; }
private:
int wartosc:
};
class MojObiekt
{
public:
MojObiekt(int i=1) { cout << "kMO" << i << endl; }
~MojObiekt() { cout << "dMO" << endl; }
void dzialaj(char c)
{
if (c=='w') throw WyjatekInt(BLEDNY_ZNAK);
cout << c << endl;
}
};
void wyswietlWyjatek(OgolnyWyjatek *w)
{ w->wyswietl(); }
int _tmain(int argc, _TCHAR* argv[])
{
try
{
MojObiekt mo;
mo.dzialaj('w');
mo.dzialaj('q');
}
catch(WyjatekInt &wyjatek)
{
wyswietlWyjatek((OgolnyWyjatek*)&wyjatek);
wyjatek.wyswietl();
}
vector <MojObiekt> moje_obiekty(3);
MojObiekt moj_obiekt(3);
return 0;
}