我开始了一个使用 wxWidgets 的项目。有2个类和2个cpp文件。 第一班:
#pragma once
#include <wx/wx.h>
class MainFrame:public wxFrame
{
public:
MainFrame(const wxString& title);
};
二年级:
#pragma once
#include <wx/wx.h>
class App:public wxApp
{
public:
bool onInit();
};
第一个cpp文件:
#include <wx/wx.h>
#include "MainFrame.h"
using namespace std;
MainFrame::MainFrame(const wxString& title) :wxFrame(nullptr, wxID_ANY, title) {
}
第二个cpp文件
#include "App.h"
#include <wx/wx.h>
#include "MainFrame.h"
wxIMPLEMENT_APP(App);
bool App::onInit() {
MainFrame* mainFrame = new MainFrame("main");
mainFrame->Show();
return true;
}
开始调试 Visual Studio 后,写下运行我的项目的 exe 文件,没有任何错误或警告,但不打开任何内容。所以我只有一个问题,为什么?
我重新打开教程并比较了代码。它们是相同的。我尝试重新打开 Visual Studio,但没有得到任何更改
函数的名称必须是
OnInit()
,开头要大写 O
,因为这是它要覆盖的虚函数的名称。您的代码示例开头有一个小写的 o
。
如果使用
override
关键字声明函数,这正是一种不会被忽视的错误,即
bool onInit() override;
这样编译器会发出关于
onInit()
不覆盖任何内容的错误。