我在一个班级有一个枚举:
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
};
但我得到以下错误:
“SettingManager”未命名类型
我在 BookManager 之前添加了 SettingManager 的前向声明
#include<settingmanager.h>
class SettingManager;
class BookManager : public NetworkManager
{
private:
SettingManager::BookDisplayKinds m_BookDisplayKind;//Error is here
};
但现在我有以下错误
“class SettingManager”中的“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;/
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句