- Solution
In the lesson, we will take a look at the solution to the tasks in the previous lesson.
We'll cover the following...
Solution
Press + to interact
//userDefinedLiteralExtended.cpp#include <iostream>#include <ostream>namespace Distance{class MyDistance{public:explicit MyDistance(double i):m(i){}friend MyDistance operator +(const MyDistance& a, const MyDistance& b){return MyDistance(a.m + b.m);}friend MyDistance operator -(const MyDistance& a,const MyDistance& b){return MyDistance(a.m - b.m);}friend MyDistance operator*(double m, const MyDistance& a){return MyDistance(m*a.m);}friend std::ostream& operator<< (std::ostream &out, const MyDistance& myDist){out << myDist.m << " m";return out;}private:double m;};namespace Unit{MyDistance operator "" _mi(long double d){return MyDistance(1609.344 *d);}MyDistance operator "" _km(long double d){return MyDistance(1000*d);}MyDistance operator "" _m(long double m){return MyDistance(m);}MyDistance operator "" _ft(long double d){return MyDistance(0.348*d);}MyDistance operator "" _dm(long double d){return MyDistance(d/10);}MyDistance operator "" _cm(long double c){return MyDistance(c/100);}}}using namespace Distance::Unit;int main(){std:: cout << std::endl;std::cout << "1.0_mi: " << 1.0_mi << std::endl;std::cout << "1.0_km: " << 1.0_km << std::endl;std::cout << "1.0_m: " << 1.0_m << std::endl;std::cout << "1.0_ft: " << 1.0_ft << std::endl;std::cout << "1.0_dm: " << 1.0_dm << std::endl;std::cout << "1.0_cm: " << 1.0_cm << std::endl;std::cout << std::endl;std::cout << "0.001 * 1.0_km: " << 0.001 * 1.0_km << std::endl;std::cout << "10 * 1_dm: " << 10 * 1.0_dm << std::endl;std::cout << "100 * 1.0cm: " << 100 * 1.0_cm << std::endl;std::cout << std::endl;std::cout << "1.0_km + 2.0_dm + 3.0_dm + 4.0_cm: " << 1.0_km + 2.0_dm + 3.0_dm + 4.0_cm << std::endl;std::cout << std::endl;Distance::MyDistance work= 63.0_km;Distance::MyDistance workPerDay= 2 * work;Distance::MyDistance abbrevationToWork= 5400.0_m;Distance::MyDistance workout= 2 * 1600.0_m;Distance::MyDistance shopping= 2 * 1200.0_m;Distance::MyDistance myDistancePerWeek= 4 * workPerDay - 3 * abbrevationToWork + workout + shopping;std::cout << "4 * workPerDay - 3 * abbrevationToWork + workout + shopping: " << myDistancePerWeek;std::cout << "\n\n";}
Explanation
-
The mile unit is implemented in lines ...