如何声明另一个类中的枚举
How declare an enum that is in another class?
我在一个类中有一个枚举:
class SettingManager : public QObject
{
Q_OBJECT
public:
enum BookDisplayKinds{
BookDisplay1=0,
BookDisplay2=1,
};
Q_ENUMS(BookDisplayKinds)
};
我想在另一个类中声明一个属性
#include<settingmanager.h>
class BookManager : public NetworkManager
{
private:
SettingManager::BookDisplayKinds m_BookDisplayKind;//Error is here
};
但我得到以下错误:
"设置管理器"未命名类型
我在簿记管理器之前添加设置管理器的前向妄想
#include<settingmanager.h>
class SettingManager;
class BookManager : public NetworkManager
{
private:
SettingManager::BookDisplayKinds m_BookDisplayKind;//Error is here
};
但是现在我有以下错误
">类设置管理器"中的"BookDisplayKinds"未命名类型
您可以切换到自 C++11 起可用的强枚举。我建议你把它放在课堂之外。
// SettingManager.h header
enum class BookDisplayKinds{
BookDisplay1=0,
BookDisplay2=1,
};
class SettingManager : public QObject
{
Q_OBJECT
public:
};
现在可以像这样做一个前向声明:
// BookManager.h header
enum class BookDisplayKinds; // forward declaration
class BookManager : public NetworkManager
{
private:
BookDisplayKinds m_BookDisplayKind;/
};
有几种方法可以做到这一点。您可以include
声明"SettingManager::BookDisplayKinds"的标题。另一种方法是在同一类中向前声明SettingManager::BookDisplayKinds
枚举。
您没有向我们显示一些错误,例如包含路径中前面的类似名称的标头。 我尝试了您的代码(但以缺少的标题完成了它(:
49359142.h
#include <QObject>
class SettingManager : public QObject
{
Q_OBJECT
public:
enum BookDisplayKinds{
BookDisplay1=0,
BookDisplay2=1,
};
Q_ENUMS(BookDisplayKinds)
};
49359142.cpp
#include "49359142.h"
class BookManager
{
private:
SettingManager::BookDisplayKinds m_BookDisplayKind;//Error is here
};
<小时 />结果
nice make 49359142.o
g++-8 -std=c++2a -fPIC -g -Wall -Wextra -Wwrite-strings -Wno-parentheses -Wpedantic -Warray-bounds -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -c -o 49359142.o 49359142.cpp
Compilation finished at Mon Mar 19 09:31:59
相关文章:
- 从另一个C++文件中C++ "Importing"枚举类
- 如何声明另一个类中的枚举
- 为什么将FMTFLAG指定两次 - 作为枚举的一部分,而另一个实例为静态const变量
- 将一个枚举映射到另一个枚举
- 尝试从另一个类传入枚举
- 将枚举传递给另一个文件?C++
- "error C2065: undeclared identifier" 来自另一个标头的枚举
- 为了简洁起见,在另一个文件中定义前向声明的嵌套结构/类/枚举
- 使用来自另一个类的枚举的 C++
- 如何使用类似 Java 的 C++ 枚举作为另一个类的成员变量
- 使用另一个类中的枚举类型
- 多值DWORD枚举作为一个函数参数C++
- 在数组中存储来自另一个命名空间的枚举值
- 另一个类的枚举作为参数
- 为什么我不能将一个枚举作为另一个枚举的基础类型?
- 调用c++中另一个类中的枚举
- 如何将一个类的嵌套枚举用作另一个类的嵌套枚举
- 如何从另一个文件访问类的公共枚举:c++
- 如何在另一个命名空间中定义一个命名空间的枚举并使用ist c++
- C++中另一个类的枚举(使用SFML)