//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; } }