Como utilizar enum no Qt?
tenho uma classe QObject Message
e outra chamada {[3] } que herda a classe de mensagens. Aqui está o ficheiro de cabeçalho:
#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
Agora quero criar um pedido no meu código e definir o tipo para SetData. Como posso fazer isso? Aqui está o meu código atual que dá o erro "'Request:: RequestTypes' não é uma classe ou namespace". O ficheiro de cabeçalho de cima está incluído no ficheiro de cabeçalho dos meus programas principais, por isso Request
é conhecido e pode ser criado e eu posso definir as outras propriedades-mas não a Type
:
Request *r = new Request();
r->Source = "My Source";
r->Destination = "My Destination";
r->Type = Request::RequestTypes::SetData;
Em outras palavras, eu poderia muito bem ter tomado um QString para a propriedade de um {[[5]}, mas seria bom e mais seguro fazer isso com um enum. Alguém me pode mostrar o que se passa aqui?
3
1 answers
Tens de declarar o enum assim:
enum class RequestTypes
{
SetData,
GetData
};
Para o usar como fez, mas isso requer C++11.
A utilização normal seria (no seu caso):
r->Type = RequestTypes::SetData;
7
Author: phord, 2016-11-30 18:14:59