콜백 함수의 유효성을 검사 할 수있는 방법이 있는지 알고 싶습니다.C++ QThread 및 콜백 콜백 함수
문제는 다음과 같습니다.
클래스 A; 클래스 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에서 그리고 :: callback_after_preparation 전에 호출 통화가 QThread에서 호출이다, A의 객체는 응용 프로그램에서 삭제됩니다 응용 프로그램 그래서
(이 응용 프로그램에서 하나의 유스 케이스입니다) A.에서 데이터 플레이어에 액세스하는 동안 종료합니다.
call_back 함수의 유효성을 검사 할 방법이 있습니까?
특정 개체가 아마도 다른 스레드에서 삭제 된 것을 알 수있는 방법이 있다면 당신은 정말 요구하는
boost :: function을 사용하여 아직 작업하지 않았으므로이 경우 작동하는지 여부는 알 수 없지만 스레드 된 응용 프로그램에서 포인터가 매달리지 않게하는 가장 간단한 방법은 std :: tr1 :: weak_ptr입니다. boost :: funtion 선언에서 사용할 수 있습니까? – stefaanv