我已经按照示例在Poco中创建了一个Timer:

TimerExample example;
Timer timer(250, 500);
timer.start(TimerCallback<TimerExample>(example, &TimerExample::onTimer));


但是我的情况下TimerExample需要是Poco :: SharedPtr作为

Poco::SharedPtr<TimerExample>TimerExample;


TimerCallback的构造函数采用以下参数:

TimerCallback(
     C & object,
     Callback method
);


其中C是本例的模板类<TimerExample>
我想知道如何将Poco :: SharedPtr传递给TimerCallback函数,以便与相关poco指南030-MemoryManagement.pdf的项目符号保持一致,其中指出:


  将SharedPtr用于对象后,切勿使用普通指针
  再次指向那个对象。

最佳答案

正如vencik的评论中指出的那样-您不能。按照目前的情况,您只能传递对以回调为成员的对象的引用,并且必须确保它在TimerCallback实例化的生存期内有效-您的回调可以是SharedPtr,您可以取消引用以传递它,但是TimerCallback将使用其地址,并且对其在其他位置的共享一无所知。

07-24 14:04