Poco 计时器与来自相同 class 的回调

Poco Timer with callback from same class

我有一个简单的 class,它使用 Poco 定时器:

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

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

很明显,回调初始化的代码是错误的。从与 TimerCallback 相同的 class (this) 中调用函数的正确方法是什么?

您可以使用 Timer 作为 MyClass 的成员:

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

然后在初始化列表中构造timer对象以在Timer

的ctor中设置间隔
MyClass::MyClass() : timer(250,5000) { // <--
  TimerCallback<MyClass> callback(*this, &MyClass::onTimer);
  timer.start(callback);
}

或使用setPeriodicIntervalsetStartInterval

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