#include <iostream>
using namespace std;

class Kilometers
{
   private:
     double kilometers;
   public:
     Kilometers(double kilometers):kilometers(kilometers) 
     {}
     void display() {
        cout<<kilometers<<"kilometeres";
     }
     double getValue() {
        return kilometers;
     }
};
class Miles 
{
    private:
      double miles;
    public:
        Miles(double miles) : miles(miles)
        {}
        Miles(Kilometers kilometers) {
        miles = kilometers.getValue()/1.61;
        }
        void display()
  		{
           cout << miles << "miles";
        }
        operator Kilometers(){
           return Kilometers(miles*1.61);
        }
};
int main()
{
	/*    
     * Converting using the conversion function
     */
    Miles m1 = 100;
    Kilometers k1 = m1;
    m1.display();
    cout << " = ";
	k1.display();
    cout << endl;
    /*
     * Converting using the constructor    
     */
     Kilometers k2 = 100;
     Miles m2 = k2;// same as:  Miles m2 = Miles(k2);
     k2.display();
      cout << " = ";
	  m2.display();
      cout << endl;
      system("pause");
}

