< previous page page_430 next page >

Page 430
LISTING 24.2 POLYMORPHIC EXCEPTIONS

d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
1:       #include <iostream.h>
2:
3:       const int DefaultSize = 10;
4:
5:       // define the exception classes
6:       class xBoundary {};
7:
8:       class xSize
9:       {
10:      public:
11:         xSize(int size):itsSize(size) {}
12:         virtual ~xSize(){}
13:         virtual int GetSize() { return itsSize; }
14:         virtual void PrintError()
15:         { cout << Size error. Received:  << itsSize << end1; }
16:      protected:
17:         int itsSize;
18:      };
19:
20:     class xTooBig : public xSize
21:     {
22:     public:
23:         xTooBig(int size):xSize(size){}
24:         virtual void PrintError()
25:          { cout << Too big! Received: ;
26:            cout << xSize::itsSize << end1; }
27:      };
28:
29:      class xTooSmall : public xSize
30:      {
31:      public:
32:         xTooSmall(int size):xSize(size){}
33:         virtual void PrintError()
34:          { cout << Too small! Received: ;
35:            cout << xSize::itsSize << end1; }
36:      };
37:
38:      class xZero : public xTooSmall
39:      {
40:      public:
41:         xZero(int size):xTooSmall(size){}
42:         virtual void PrintError()
43:          { cout << Zero!!. Received: ;
44:            cout << xSize::itsSize << end1; }
45:      };
46:
47:      class xNegative : public xSize
48:      {
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_430 next page >

If you like this book, buy it!