Change the object pointer behaviour
#include <iostream> using namespace std; class convert { protected: double val1; double val2; public: convert(double i) { val1 = i; } double getconv(void) {return val2;} double getinit(void) {return val1;} virtual void compute(void) = 0; }; class l_to_g : public convert { public: l_to_g(double i) : convert(i) { } void compute(void) { val2 = val1 / 3.7854; } }; class f_to_c : public convert { public: f_to_c(double i) : convert(i) { } void compute(void) { val2 = (val1 - 32) / 1.8; } }; int main(void) { convert *p; l_to_g lgob(4); f_to_c fcob(70); p = &lgob; cout << p->getinit() << " liters is "; p->compute(); cout << p->getconv() << " gallons." << endl; p = &fcob; cout << p->getinit() << " in Fahrenheit is "; p->compute(); cout << p->getconv() << " Celsius." << endl; }