Проблема наследования: ArgumentError при использовании метода отсоединения wxRuby
У меня есть следующая функция, предназначенная для закрытия панели:
def close_active_panel
if (@active_panel and @active_panel.class <= Wx::Window)
@sizer.detach(@active_panel)
@sizer.remove(0) # 0 is index of first and only item, the active panel
@active_panel.destroy_children
@active_panel.destroy
end
end
Это работает большую часть времени, но иногда (кажется, я не могу найти шаблон, когда это происходит), возникает следующее исключение:
ArgumentError
Wrong arguments for overloaded method 'wxSizer.Detach'. Possible C/C++ prototypes are: bool wxSizer.Detach(wxWindow *window) bool wxSizer.Detach(wxSizer *sizer) bool wxSizer.Detach(size_t index)
Кажется странным, что это происходит, потому что единственный способ, которым он должен даже добраться до метода detach, - это если active_panel наследуется от класса Wx::Window.
Есть ли какой-то трюк с наследованием, которого мне здесь не хватает? Я попытался вывести класс активной панели и ее родителей, чтобы убедиться, что она действительно наследуется от Wx::Window, и проблема остается. Любая помощь будет принята с благодарностью.