Код: Выделить всё
class Events
{
protected:
virtual void __resizeChildren(float x, float y, float width, float height)
{
}
static void eventHandler(Event* evt, float x, float y, float width, float height)
{
evt->__resizeChildren(x,y,width,height);
// handles some events
}
};
class Window : public Events
{
protected:
virtual void __resizeChildren(float x, float y, float width, float height)
{
// resizes children
__internalOnMoveResize(); // after resizing, call an internal event function depending on the derived class type
}
virtual void __internalOnMoveResize()
{
// do something
}
};
class Scroll : public Window
{
protected:
virtual void __internalOnMoveResize()
{
// do something specific to objects of this class
}
}
Однако, когда __internalOnMoveResize() вызывается внутри Window::__resizeChildren(), фактически вызывается Window::__internalOnMoveResize(), а не Scroll::__internalOnMoveResize (), а это не то, чего я ожидал.
Я что-то упустил? Разве не следует вызывать Scroll::__internalOnMoveResize(), даже если он вызывается из метода класса Window, точно так же, как __resizeChildren()?
Я даже пытался передать текущий указатель объекта Window в статическую функцию и вызвал __internalOnMoveResize изнутри, точно так же, как и он происходит с eventHandler и __resizeChildren, но это тоже не сработало.
Пожалуйста, если нужна дополнительная информация, дайте мне знать чтобы я мог обновить этот пост.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ss-functio
Мобильная версия