我似乎遇到了我正在研究的wxWidgets项目的问题。我不断为一个不涉及任何虚函数的类获取vtable链接器错误。我想知道是否有人可以对这个问题有所了解,因为根据我的理解,不应该有一个不使用虚函数的类的vtable。我见过的大多数类似主题都发生在有人忘记定义解构函数时,但我很确定解构函数是否正确定义。错误可以在下面看到。
||=== Hike Planner GUI, Debug ===|
obj\Debug\GUIFrame.o||In function `PlanWindow':|
E:\Projects\Hike Planner GUI\GUIFrame.cpp|76|undefined reference to `vtable for PlanWindow'|
E:\Projects\Hike Planner GUI\GUIFrame.cpp|76|undefined reference to `vtable for PlanWindow'|
obj\Debug\GUIFrame.o||In function `~PlanWindow':|
E:\Projects\Hike Planner GUI\GUIFrame.cpp|81|undefined reference to `vtable for PlanWindow'|
E:\Projects\Hike Planner GUI\GUIFrame.cpp|81|undefined reference to `vtable for PlanWindow'|
E:\Projects\Hike Planner GUI\GUIFrame.cpp|81|undefined reference to `vtable for PlanWindow'|
||=== Build finished: 5 errors, 0 warnings ===|
来自GUIFrame.h的段
class PlanWindow : public wxWindow
{
DECLARE_EVENT_TABLE()
public:
PlanWindow(wxWindow* parent, wxWindowID id);
~PlanWindow();
void GetLocationList(int RetCode);
wxListBox *PlanList;
};
来自GUIFrame.cpp的细分:
PlanWindow::PlanWindow(wxWindow* parent, wxWindowID id) : wxWindow(parent,id)
{
}
PlanWindow::~PlanWindow()
{
}
void PlanWindow::GetLocationList(int RetCode)
{
if(RetCode == DEST)
{
}
else if(RetCode == TH)
{
}
else if(RetCode == FREE)
{
}
else
{
}
}
任何帮助都会很棒。错误发生在构造函数和析构函数定义中。
答案 0 :(得分:3)
您还需要使用BEGIN_EVENT_TABLE
文件中的END_EVENT_TABLE
/ cpp
实施声明的事件表。一个例子;
BEGIN_EVENT_TABLE(PlanWindow, wxWindow)
// EVT_SIZE (PlanWindow::OnSize) // Example size handler
END_EVENT_TABLE()