Таймер Poco с обратным вызовом из того же класса - PullRequest
0 голосов
/ 03 июля 2018

У меня есть простой класс, который использует таймер Poco:

MyClass::MyClass(){
 Timer timer(250,5000);
 TimerCallback<MyClass> callback(*this, &MyClass::onTimer);
 timer.start(callback);
}

MyClass::onTimer(){
  cout <<"Tick"<<endl;
}

Очевидно, что код для инициализации обратного вызова неверен. Как правильно вызывать функцию из одного и того же класса с помощью TimerCallback?

1 Ответ

0 голосов
/ 03 июля 2018

Вы можете использовать Timer в качестве члена MyClass:

MyClass {
  //...
  Timer timer;
};

затем создайте timer объект в списке инициализации, чтобы установить интервалы в ctor Timer

MyClass::MyClass() : timer(250,5000) { // <--
  TimerCallback<MyClass> callback(*this, &MyClass::onTimer);
  timer.start(callback);
}

или используйте setPeriodicInterval и setStartInterval

  MyClass::MyClass() {
   timer.setStartInterval(500);
   timer.setPeriodicInterval(2500);
   TimerCallback<MyClass> callback(*this, &MyClass::onTimer);
   timer.start(callback);
  }
...