我创建了下面的例子与波科计时器:如何将Poco :: SharedPtr传递给TimerCallback函数?
TimerExample example;
Timer timer(250, 500);
timer.start(TimerCallback<TimerExample>(example, &TimerExample::onTimer));
不过,我对我的情况TimerExample需要一个波科:: SharedPtr作为
Poco::SharedPtr<TimerExample>TimerExample;
TimerCallback的构造采用下列参数:
TimerCallback(
C & object,
Callback method
);
其中C是模板类<TimerExample>
对于我们的情况。
我想知道如何在波苏:: SharedPtr传递给TimerCallback功能,以便与来自相关POCO指南030 MemoryManagement.pdf子弹一致的在那里说:
一旦您使用SharedPtr作为对象,而不再使用纯指针 再次对该对象。
这看起来很奇怪;由于'TimerCallback'构造函数引用了'TimerExample'实例,所以无论您做什么,都无法将共享指针传递给它(您总是会得到一个引用,而您需要保留共享指针的副本)。我想你需要派生一个'TimerCallback'子代,它可以保留共享指针的副本,并在时机成熟时调用其祖先的方法来执行回调... – vencik