//In .h
class timer_s {
int interval;
int end_time;
bool repeat;
bool finished;
public:
timer_s(int interval, bool repeat);
bool done();
};
//In .cpp
timer_s::timer_s(int interval, bool repeat) : interval(interval), repeat(repeat) {
end_time = ::time(NULL) + interval;
}
bool timer_s::done() {
bool done = ::time(NULL) >= end_time && !finished;
if (done) {
if(repeat) end_time = ::time(NULL) + interval;
else finished = true;
}
return done;
}
//Usage
while (true) {
static timer_s timer(1, true);
if (timer.done()) {
//will print "done" every 1 second
cout << "done" << endl;
}
}