// op.h: interface for the op class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_OP_H__66A78B09_F9D2_4CA6_92CF_7BDD0EA49FC7__INCLUDED_) #define AFX_OP_H__66A78B09_F9D2_4CA6_92CF_7BDD0EA49FC7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class op { public: op(); virtual ~op(); virtual int evaluate(); }; class unary : public op { public: unary(); ~unary(); private: op *next; }; class binary : public op { public: binary(); ~binary(); private: op *left, *right; }; class value : public op { friend ostream &operator<<(ostream &, const value &); friend istream &operator>>(istream &, value &) public: value(int x); ~value(); int operator==(const op &x); int operator=(const value &x); private: int val; }; class add : public binary { friend ostream &operator<<(ostream &, const binary &); friend istream &operator>>(istream &, binary &) public: value(op <, op &rt); ~value(); int operator==(const op &x); int operator=(const add&x); }; #endif // !defined(AFX_OP_H__66A78B09_F9D2_4CA6_92CF_7BDD0EA49FC7__INCLUDED_)