Gui.h
#ifndef GUI_H
#define GUI_H
#include <QObject>
class Gui
{
public:
Gui();
enum ViewNames
{
MAIN_VIEW,
WORK_VIEW
};
enum ActionNames
{
BACK,
HOME
};
static std::string GetViewStringFor(ViewNames view);
static std::string GetActionStringFor(ActionNames view);
};
#endif // GUI_H
Gui.cpp
#ifndef GUI_H
#define GUI_H
#include <QObject>
#include "Gui.h"
class Gui
{
public:
Gui();
static std::string GetViewStringFor(ViewNames view)
{
return "";
}
static std::string GetActionStringFor(ActionNames view)
{
return "";
}
};
#endif // GUI_H
答案 0 :(得分:1)
您两次声明了该类,略有不同:一次在gui.cpp中,一次在gui.h中
这两个类的区别在于,枚举定义不在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 "";
}
答案 1 :(得分:0)
大监督-cpp文件再次包含了类。。。谢谢大家。
#include "Gui.h"
Gui::Gui()
{
}
static std::string GetViewStringFor(Gui::ViewNames view)
{
return "";
}
static std::string GetActionStringFor(Gui::ActionNames view)
{
return "";
}