#ifndef CalcEng_SEEN__ #define CalcEng_SEEN__ /////// File CalcEng.h /////// #define NULL 0 class CalcEng { public: CalcEng(); virtual void operate(char c); // perform operation c virtual char operation() { return op; } virtual void operand(double in); virtual double output() { return( argcnt == 2 ? arg : ans ); } static const char* keys; // op keys recognized enum {PREC=15}; // max guranteed precision // error indication by void* conversion operator void*() { return(err_flag ? NULL : this); } protected: virtual void compute(); virtual void allclear(); double ans, arg; int argcnt; char op; int err_flag; }; #endif