home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / IDIOMS.ZIP / 5-20.C < prev    next >
C/C++ Source or Header  |  1991-12-04  |  778b  |  33 lines

  1. /* Copyright (c) 1992 by AT&T Bell Laboratories. */
  2. /* Advanced C++ Programming Styles and Idioms */
  3. /* James O. Coplien */
  4. /* All rights reserved. */
  5.  
  6. #include <iostream.h>
  7.  
  8. typedef double Frequency;
  9. typedef double Voltage;
  10.  
  11. class Value {
  12. public:
  13.     enum Type { T_LPF, T_HPF, T_BPF, T_Notch, T_Data };
  14.     virtual Type type() { return T_Data; }
  15.     virtual Frequency f1() { return omega1; }
  16.     virtual void print() {
  17.         cout << "Value " << volts << " volts at frequency " <<
  18.             omega1 << endl;
  19.     }
  20.     virtual Value *evaluate(Value* = 0) {
  21.         return this;
  22.     }
  23.     Value(Voltage v=0, Frequency w1=0): volts(v), omega1(w1) {
  24.     }
  25. private:
  26.     Frequency omega1;
  27.     Voltage volts;
  28. };
  29.  
  30. Value Zero(0);
  31.  
  32. Value *zero = &Zero;
  33.