Можно создать дубликат:
Operator overloadingперегружать оператор извлечения >> в C++
Я должен кодировать программу синхронизации, в котором я мог бы войти в часы, минуты и секунды, а перегружать . Это мои коды:
clockType.h
#include<iostream>
using namespace std;
class clockType
{
public:
clockType();
void getTime();
friend istream& operator>>(istream&, const clockType);
private:
int hr, min, sec;
}
clockType.cpp
#include<iostream>
#include'clockType.h"
using namespace std;
clockType::clockType()
{
hr = 0;
min = 0;
sec = 0;
}
void clockType::getTime()
{
while(hr>=24)
hr = hr - 24;
while(min>=60)
min = min - 60;
while(sec>=60)
sec = sec - 60;
cout<<setfill('0')
<<setw(2)<<hr<<":"
<<setw(2)<<min<<":"
<<setw(2)<<sec<<endl;
}
istream& operator>>(istream& in, clockType cl)
{
in>>cl.hr>>cl.min>>cl.sec;
return in;
}
entryPoint.cpp
#include<iostream>
#include'clockType.h'
using namespace std;
int main()
{
clockType clock;
cout<<"Enter hr, min, sec";
cin>>clock;
clock.getTime();
return 0;
}
Там нет ошибки. Мой вопрос: когда я вхожу в час, мин и сек, почему он выводит 00:00:00? Почему не передают свои значения объектным часам?
Вы должны ** никогда не использовать операции ввода-вывода без проверки ошибок. Любая из ваших операций может выйти из строя на любом этапе, и вы никогда не должны предполагать, что ваши переменные имеют значимые значения, если все операции не удастся. В частности, вы не должны перезаписывать свои живые переменные, пока не убедитесь, что прочитали действительный ввод. –
Недавно я провел курс C++, который содержал эту точную проблему. Если это домашняя работа, не забудьте обозначить ее как таковую. – Bingo