Ну, я еще раз попал в кирпич. Снова что-то, я не вижу причины, по которой это неправильно, и понятия не имею, как заставить его работать:
У меня есть экземпляр класса * 1003.* Human .Класс Человек является производным от Объект .. Класс Объект имеет функцию vitrual, называемую "PerformStep".Класс Human перегружает эту функцию. Человек класс также имеет функцию "WalkAction".Теперь я хочу вызвать эту «прогулку» во время указателя на функцию-член PerformStep - By.
Мне нравится делать это с помощью указателя следующим образом:
Люди глупы: они знают , как ходить, ноне когда .Таким образом, экземпляр бога будет задан на шаге: «что мне теперь делать» - а затем этот экземпляр бога возвращает указатель на правильную функцию-член.
virtual void PerformStep()
{
postion.x += 0; //redundant line to check for the debugger
CALL_MEMBER_FN(*this,&Human::WalkAction);
Object::PerformStep();
}
Human :: WalkAction:
void WalkAction(){
position.x += 1;
}
CALL_MEMBER_FN (макрос):
CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember))
Проблема в том, что когда я запускаю программу в режиме отладки, она полностью игнорирует строку суказатель на функцию- Если я запускаю это оператор за оператором, он «перепрыгивает» через линию, если я ставлю точку останова в действии ходьбы, она никогда не достигает точки останова. Если я ставлю точку останова на конкретной строке, точки останова перемещаются к следующейline.
Что здесь происходит?