#include <iostream>
using namespace std;
class Distance
{
private:
int miles;
int meter; // 1 mile = about 1609 metres
double centimeter; // 1 meter = 100 centimeter
public:
Distance() : miles(0), meter(0), centimeter(0.0) { ; };
Distance(int mi,int m, double cm) : miles(mi), meter(m), centimeter(cm) { ; };
void setDist(int mi,int m, double cm) { miles=mi, meter=m, centimeter=cm; };
void setMiles(int mi) { miles=mi; };
void setMeter(int m) { meter=m; };
void setCentimeter(double cm) { centimeter=cm; };
int getMiles() { return miles; };
int getMeter() { return meter; };
double getCentimeter() { return centimeter; };
double sum_centimeter() const { return ((miles * 1609) + meter) * 100 + centimeter; };
friend Distance operator+(const Distance& a, const Distance& b);
friend Distance operator-(const Distance& a, const Distance& b);
bool operator==(const Distance& b) const;
bool operator>(const Distance& b) const;
bool operator<(const Distance& b) const { return ! (*this > b); };
friend ostream& operator <<(ostream& os, const Distance& d);
};
Distance operator+(const Distance& a, const Distance& b)
{
Distance c;
c.miles = a.miles + b.miles;
c.meter = a.meter + b.meter;
c.centimeter = a.centimeter + b.centimeter;
if( c.centimeter >= 100.0 ) {
c.centimeter -= 100.0;
++c.meter;
}
return c;
}
Distance operator-(const Distance& a, const Distance& b)
{
Distance c;
c.miles = a.miles - b.miles;
c.meter = a.meter - b.meter;
c.centimeter = a.centimeter - b.centimeter;
return c;
}
bool Distance::operator==(const Distance& b) const
{
return (this->miles==b.miles && this->meter==b.meter && this->centimeter==b.centimeter);
}
bool Distance::operator>(const Distance& b) const
{
return (this->sum_centimeter() > b.sum_centimeter());
}
ostream& operator <<(ostream& os, const Distance& d)
{
cout << d.miles << " miles " << d.meter << " meters " << d.centimeter << " centimeters";
return os;
}
int main()
{
Distance a(1,2,4);
Distance b(1,1,4);
string boolstr[] = { "FALSE", "TURE" };
cout << "DISTANCE CALCULATOR" << endl << endl;
cout << "Given :" << endl;
cout << " Distance a(1,2,4)" << endl;
cout << " Distance b(1,1,4)" << endl;
cout << endl;
cout << "The sum of distance is : " << a+b << endl;
cout << "The difference of distance is : " << a-b << endl;
cout << endl;
cout << "CONTITIONAL OPERATORS" << endl;
cout << endl;
cout << "The statement distance a==b is : " << boolstr[a==b] << endl;
cout << "The statement distance a>b is : " << boolstr[a>b] << endl;
cout << "The statement distance a<b is : " << boolstr[a<b] << endl;
맨밑 세줄 오류나는데 이유좀
배열 인덱스값으로 논리연산이 됐던가?
나대네
저렁 형태로 호출 안될걸?
안될건 없울거같은데
이러한 피연산자 와 일치하는 << 연산자가 없습니다 이렇게오류뜸
distance 안에 std::ostream 이랑 distance랑 연산자 오버로딩 해야해욧. << 이 연산자