QObject 클래스가 Message
이고 다른 하나가 Request
이며 메시지 클래스를 상속합니다. 다음은 헤더 파일입니다.Qt에서 enum을 사용하는 방법?
#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
이제 코드에서 Request를 만들고 SetData에 Type을 설정하려고합니다. 어떻게해야합니까? 다음은 " 'Request :: RequestTypes'가 클래스 또는 네임 스페이스가 아닌 오류를 제공하는 현재 코드입니다. 즉
Request *r = new Request();
r->Source = "My Source";
r->Destination = "My Destination";
r->Type = Request::RequestTypes::SetData;
: 나뿐만 아니라 수 있지만 Type
- 위의 헤더 파일이 너무 Request
이 알려져 있고, 만들 수 있습니다와 나는 다른 속성을 설정할 수 있습니다, 내 주요 프로그램 헤더 파일에 포함되어 있습니다 Request
의 Type
속성에 대한 QString을 가져 왔지만 열거 형으로이 작업을 수행하는 것이 안전하고 안전합니다. 누군가 나에게 무엇이 잘못되었는지 보여 주실 수 있습니까? 당신이했던 것처럼 그것을 사용하기 위해
enum class RequestTypes
{
SetData,
GetData
};
,하지만 C++ 11이 필요합니다
잘 작동합니다 그. 오류를 일으키는 완전한 프로그램 (예 : [SSCCe] (http://sscce.org/))뿐만 아니라 완전하고 편집되지 않은 오류 메시지를 포함시킬 수 있습니까? –
거기에 아무것도 더, 여기에 전체 오류 메시지 (내 질문에서 코드를 사용하는 경우) : mainwindow.cpp : 235 : 24 : 오류 : 'Request :: RequestTypes'클래스 또는 네임 스페이스가 없습니다 make : *** [mainwindow .o] Error 1 – Robert
이상하게 들리지만 Request :: RequestTypes :: SetData는 잘 동작 할 것입니다. 어쩌면 Qt 사전 처리와 관련이 있는데, 그렇지 않으면이 C++ 사용법을 방해 할 수 있습니다. –