为什么除非从类的构造函数中调用,否则使用以下方法可能会失败?
updateState = boost::bind( &PhysicsObject::updateActive, this );
但是下面的代码在运行时会失败,并出现“what(): call to empty boost::function”异常
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 );
}
}
最佳答案
调用未设置的 boost::function
会引发此类异常。您应该根据默认的“状态”在构造函数中对其进行初始化,否则如果传递的状态与当前状态相同,您的 setState
将不会设置它。
请注意,在您的第二个绑定(bind)中,您传递的是 this
指向的对象的拷贝。
关于c++ - Boost::bind 'Call to empty boost::function' 仅当未在构造函数中设置时才会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870600/