2010-08-10 90 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

你实际上是在问,如果有知道的特定对象已被删除,大概在另一个线程的任何方式。这取决于你的代码来处理这样的东西 - 毕竟它是你的代码执行删除,通过设置某种标志。