< previous page page_381 next page >

Page 381
LISTING 22.1 continued
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
16:       Normal() { Log(); }
17:       virtual ~Normal() {}
18:       virtual void Log() { cout << Logging normal conditions\n; }
19:    };
20:
21:    class Error : public Condition
22:    {
23:    public:
24:       Error() {Log();}
25:       virtual ~Error() {}
26:       virtual void Log() { cout << Logging error!\n;}
27:    };
28:
29:    class Alarm : public Condition
30:    {
31:    public:
32:       Alarm ();
33:       virtual ~Alarm() {}
34:       virtual void Warn() { cout << Warning!\n; }
35:       virtual void Log() { cout << General Alarm log\n; }
36:       virtual void Call() = 0;
37:
38:    };
39:
40:    Alarm::Alarm()
41:    {
42:        Log();
43:       Warn();
44:    }
45:    class FireAlarm : public Alarm
46:    {
47:    public:
48:       FireAlarm(){Log();};
49:       virtual ~FireAlarm() {}
50:       virtual void Call() { cout<< Calling Fire Dept.!\n; }
51:       virtual void Log() { cout << Logging fire call.\n; }
52:    };
53:
54:    int main()
55:    {
56:       int input;
57:       int okay = 1;
58:       Condition * pCondition;
59:       while (okay)
60:       {
61:          cout << (0)Quit (1)Normal (2)Fire: ;
62:          cin >> input;
63:          okay = input;
64:          switch (input)
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_381 next page >

If you like this book, buy it!