Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt中使用enum?_C++_Enums_Qt4 - Fatal编程技术网

C++ 如何在Qt中使用enum?

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

我有一个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 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
  };