Вы объявили класс дважды немного по-другому: один раз в gui.cpp и один раз в gui.h
Разница в этих двух классах заключается в том, что определения enum не объявлены в классе в gui.cpp.
Ваш файл gui.cpp определяет символ GUI_H, а затем включает в себя gui.h, который проверяет наличие символа GUI_H. Потому что в gui.h ничего не существует.
Таким образом, это означает, что класс в gui.cpp является тем, который используется, а класс в gui.h игнорируется, но перечисления не объявляются в классе в gui.cpp, поэтому компилятор не может их найти .
Чтобы исправить это, измените gui.cpp следующим образом:
#include <QObject>
#include "Gui.h"
Gui::Gui()
{
}
static std::string Gui::GetViewStringFor(Gui::ViewNames view)
{
return "";
}
static std::string Gui::GetActionStringFor(Gui::ActionNames view)
{
return "";
}