#include <iostream>
using namespace std;
class NumDays
{
private:
int hour;
int day;
void simplify();
public:
NumDays()
{
day = 0;
hour = 0;
}
void setData(int d, int h)
{
hour = h;
day = d;
simplify();
}
int getHour()
{
return hour;
}
int getDay()
{
return day;
}
NumDays operator++(int);
NumDays operator--(int);
};
void NumDays::simplify()
{
hour = 8*day + hour;
day = hour/8;
hour = hour % 8;
}
NumDays NumDays::operator++(int)
{
NumDays obj1;
hour++;
simplify();
return obj1;
}
NumDays NumDays::operator--(int)
{
NumDays obj1;
hour--;
simplify();
return obj1;
}
void setFirst(NumDays &);
void setSecond(NumDays &);
void addData(NumDays &, NumDays &, NumDays &);
int main()
{
NumDays first, second, third;
setFirst(first);
setSecond(second);
addData(first, second, third);
}
void setFirst(NumDays &obj1)
{
int day, hour = 0;
cout << "Please enter the amount of days followed by hours." << endl;
cin >> day >> hour;
obj1.setData(day, hour);
}
void setSecond(NumDays &obj2)
{
int day, hour = 0;
cout << "Please enter the amount of days followed by hours again." << endl;
cin >> day >> hour;
obj2.setData(day, hour);
}
void addData(NumDays &obj1, NumDays &obj2, NumDays &obj3)
{
for (int k = 0; k < 8; k++)
{
obj3 = obj1++;
cout << " First Data: " << obj3.getDay() << " day(s), "
<< obj3.getHour() << " hour(s).";
cout << " First Data: " << obj1.getDay() << " day(s), "
<< obj1.getHour() << " hour(s).\n";
}
cout << endl;
for (int l = 0; l < 8; l++)
{
obj3 = obj2++;
cout << " Second Data: " << obj3.getDay() << " day(s), "
<< obj3.getHour() << " hour(s).";
cout << " Second Data: " << obj2.getDay() << " day(s), "
<< obj2.getHour() << " hour(s).\n";
}
}
파일을 실행하면 obj3에 0 일과 0 시간이 있고 obj2가 증가합니다. 왜 이렇게 된거야? 후위 기호없이 obj3 = obj2로 시도하면 끝났습니다. 따라서 obj2에서 데이터를 가져 오는 데 문제가 없다고 가정합니다. 그러나 후위 연산자를 포함 시키면 데이터는 0과 0이됩니다.과부하 후치 연산자가 작동하지 않습니다.
도움이 될 수 있습니다. http://stackoverflow.com/questions/4421706/operator-overloading?rq=1 –
운영자가 고장났습니다. 어떤 이유로 든 기본 생성 객체를 반환합니다. –
좋아, 얘들 아, 고쳤다 ... NumDays obj1에 (* this)를 추가했다. 그리고 그것을 NumDays obj1 (* this)로 만들었습니다. 이제 이와 같이 작동합니다. – user3347541