如何将 Poco::SharedPtr 传递给 TimerCallback 函数?

How to pass Poco::SharedPtr to a TimerCallback function?

我已经按照示例使用 Poco 创建了一个计时器:

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

Once you use SharedPtr for an object, never work with plain pointers to that object again.

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