gpt4 book ai didi

C++ 在静态方法中使用枚举

转载 作者:行者123 更新时间:2023-11-28 04:26:32 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com