C++ 如何在Qt中使用enum?
我有一个QObject类C++ 如何在Qt中使用enum?,c++,enums,qt4,C++,Enums,Qt4,我有一个QObject类Message,还有一个名为Request的类继承了Message类。下面是头文件: #ifndef MESSAGE_H #define MESSAGE_H #include <QObject> class Message : public QObject { Q_OBJECT public: explicit Message(QObject *parent = 0); QString Source; QString Des
Message
,还有一个名为Request
的类继承了Message类。下面是头文件:
#ifndef MESSAGE_H
#define MESSAGE_H
#include <QObject>
class Message : public QObject
{
Q_OBJECT
public:
explicit Message(QObject *parent = 0);
QString Source;
QString Destination;
QString Transaction;
QList<QObject> Content;
signals:
public slots:
};
class Request : public Message
{
Q_OBJECT
Q_ENUMS(RequestTypes)
public:
explicit Request();
enum RequestTypes
{
SetData,
GetData
};
RequestTypes Type;
QString Id;
};
#endif // MESSAGE_H
换句话说:我也可以为
请求
的类型
属性使用QString,但是使用enum这样做会更好更安全。有人能告诉我这里出了什么问题吗?您需要这样声明枚举:
enum class RequestTypes
{
SetData,
GetData
};
为了像您那样使用它,但这需要C++11
通常的用法是(在您的情况下):
r->Type=RequestTypes::SetData代码>应该可以正常工作。你能包括完整的未编辑的错误消息,以及引发错误的完整程序(.e.a)吗?没有更多,这里是完整的错误消息(当使用我问题中的代码时):mainwindow.cpp:235:24:error:'Request::RequestTypes'不是类或名称空间make:**[mainwindow.o]error 1这很奇怪,Request::RequestTypes::SetData
应该可以正常工作。也许这与QT预处理有关,这干扰了C++的用法。是的,我也很惊讶。我正在使用Qt4.8.4。
enum class RequestTypes
{
SetData,
GetData
};