如何将 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 将获取它的地址并且对它在其他地方的共享一无所知。
我已经按照示例使用 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 将获取它的地址并且对它在其他地方的共享一无所知。