2011-10-24 60 views
0

爲什麼使用以下失敗除非在類的構造函數中調用?如果未在構造函數中設置,Boost :: bind'調用空boost :: function'失敗

updateState = boost::bind(&PhysicsObject::updateActive, this); 

但是以下在運行時出現故障,有「什麼()調用空的boost ::功能」例外

void PhysicsObject::setState(PhsyicsObjectState aState) { 
_state = aState; 

if(_state == ACTIVE) { // This branch is executed 
    updateState = boost::bind(&PhysicsObject::updateActive, this); 
} else { 
    updateState = boost::bind(&PhysicsObject::updateExploding, *this); 
} 
} 
+0

第二個'bind'調用中的'* this'看起來很可疑 –

+0

你說得對,當我進入時我只是這樣設置 - 讓我試試這個或那個。 – 1dayitwillmake

回答

2

調用那些尚未設定會提出這樣的異常的boost::function。你應該根據默認的「狀態」在你的構造函數中初始化它,否則你的setState將不會設置它,如果通過與當前狀態相同的狀態。

請注意,在您的第二個綁定中,您傳遞的是this指向的對象的副本

+0

這絕不會發生,我更新了代碼和問題以反映這一點。對困惑感到抱歉。 – 1dayitwillmake

相關問題