2010-08-10 80 views
1

我想知道是否有任何方法來檢查boost回調函數的有效性。C++ QThread和boost回調函數

問題如下

class A; B類; B類;

在A類的初始化函數完成後。

boost :: function < void(class B)> call_back;

using namespace boost :: lambda; call_back = bind(& A :: callback_after_preparation,this,boost :: lambda :: _ 1);

的問題是,回調是從QThread的和之前A :: callback_after_preparation稱爲從QThread的叫,A的對象從應用程序中刪除(這是應用一個用例)

所以應用程序在訪問A中的數據塊時退出。

是否有任何方法來檢查call_back函數的有效性?

請回答

+0

我還沒有使用boost :: function,所以我不知道它是否適用於這種情況,但避免線程化應用程序中懸掛指針的最直接的方法是std :: tr1 :: weak_ptr。這可以在boost :: funtion聲明中使用嗎? – stefaanv 2010-08-10 07:33:32

回答

0

你實際上是在問,如果有知道的特定對象已被刪除,大概在另一個線程的任何方式。這取決於你的代碼來處理這樣的東西 - 畢竟它是你的代碼執行刪除,通過設置某種標誌。