我已经按照示例在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将使用其地址,并且对其在其他位置的共享一无所知。