Ошибка компоновщика: неопределенная ссылка на vtable

Кажется, у меня проблема с проектом 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
    {

    }
}

любая помощь была бы замечательной. ошибки возникают в определениях конструктора и деструктора.


person user2619631    schedule 25.07.2013    source источник
comment
Уже есть правильный ответ, но я просто хотел бы упомянуть, что у вас всегда есть виртуальные функции в вашем классе, производном от wxWindow, например его dtor виртуальный, потому что он виртуален в wxWindow.   -  person VZ.    schedule 26.07.2013


Ответы (1)


Вам также необходимо реализовать объявленную таблицу событий, используя _1 _ / _ 2_ в вашем cpp файле. Пример;

BEGIN_EVENT_TABLE(PlanWindow, wxWindow)
//  EVT_SIZE (PlanWindow::OnSize)       // Example size handler
END_EVENT_TABLE()
person Joachim Isaksson    schedule 25.07.2013
comment
ух ты. Я знал, что делаю что-то глупое. не ожидал, что это будет так глупо. Спасибо. знак равно - person user2619631; 25.07.2013