我在trackerFrame.h文件中有如下内容。
它包含在trackerFrame.cpp和main.cpp中,无论出于什么原因,当我尝试编译与wxWidgets事件表宏有关的所有内容时,我会从中获得多个定义问题。
#ifndef TRACKER_H
#define TRACKER_H
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
# include "wx/wx.h"
#endif
#include <wx/frame.h>
#include <wx/string.h>
#include <wx/menu.h>
#include <iostream>
class mainFrame : public wxFrame {
public:
mainFrame(wxString title);
DECLARE_EVENT_TABLE()
private:
void closeProgram(wxCommandEvent & event);
};
BEGIN_EVENT_TABLE(mainFrame, wxFrame)
EVT_MENU(wxID_EXIT, mainFrame::closeProgram)
END_EVENT_TABLE()
#endif
我99.9%肯定我正在做包含警卫,我只是无法弄清楚发生了什么。
答案 0 :(得分:4)
你的包含警卫是正确的。问题最有可能出现在这里:
BEGIN_EVENT_TABLE(mainFrame, wxFrame)
EVT_MENU(wxID_EXIT, mainFrame::closeProgram)
END_EVENT_TABLE()
According to the wxWidgets wiki on event tables,需要将事件表定义到.cpp
文件中。因此,您将拥有一个包含tracker.cpp
文件的tracker.h
文件,并将BEGIN_EVENT_TABLE(mainFrame, wxFrame) ...
地图放入tracker.cpp
文件中。