1

パネルを閉じるための次の関数があります。

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 から継承していることを確認しましたが、問題は解決しません。どんな助けでも大歓迎です。

4

0 に答える 0