// trick2.cpp - demonstrates operator* usage in Enforcer #include #include typedef int expression; class test2 { public: test2(expression exp) : expr(exp) {} bool pos(expression exp) { return exp > 0; } expression& operator*() { if(pos(expr)) { std::cout << "\n expression is positive, "; return expr; } else { std::cout << "\n expression is not positive, "; return expr; } } private: expression expr; }; void main() { std::cout << "\n Demonstrating Enforcer's operator* trick" << "\n ==========================================\n"; test2 t1(2+3); std::cout << *t1 << " is value of expression"; test2 t2(2-3); std::cout << *t2 << " is value of expression"; std::cout << "\n\n"; }