QT5 的新手只做了一点 C++。主要是 C#。无论如何,尝试制作一个枚举并在类的静态方法中使用它。类文件没有看到枚举(编译器错误是“未知类型名称 ActionNames”。尝试了一些东西,将枚举移出类,在 cpp 文件中的 ViewNames 前面使用 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
界面.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
最佳答案
您两次声明类的方式略有不同:一次在 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 "";
}
关于C++ 在静态方法中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191336/