You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wxWidgets中childFrame调用Show()无法访问的问题排查

解决wxMDIChildFrame调用Show()的访问错误

你的代码报错核心原因是childFrame类默认采用了私有继承wxMDIChildFrame,导致父类的public成员函数Show()在子类中被转为私有,外部无法直接调用。

在C++中,用class定义类时,默认继承方式是私有继承,而wxWidgets窗口类的核心成员函数(比如Show())都是public权限,必须通过公有继承才能让外部正常访问这些方法。

修正步骤

修改childFrame.h中的继承声明,显式添加public关键字:

#pragma once
#include <wx/wx.h>

class childFrame: public wxMDIChildFrame  // 补充public关键字
{
public:
    childFrame(wxMDIParentFrame* parent, wxString childTitle);
};

修改后,childFrame以公有继承方式继承wxMDIChildFrame,父类的public成员函数Show()就可以在外部正常调用了。

错误信息对应解析

编译器报错明确指出:

'wxMDIChildFrame::Show'无法访问,因为'childFrame'使用私有继承方式继承自'wxMDIChildFrame'

私有继承会将父类所有成员(包括public)转为子类私有成员,因此在MyFrame::OnNewMenu中调用cFrame->Show()时,编译器判定为访问私有成员,触发错误。

内容的提问来源于stack exchange,提问作者Ammishaddai Boakye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:47:01