我創建了下面的例子與波科計時器:如何將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