枚举不命名类型

时间:2013-02-28 11:42:04

标签: c++ qt

我有一个班级Response说。

#include "NetworkResponse.h"


class NetworkResponse;

class Response {
public:
    Response();
    virtual ~Response();
    Response(NetworkResponse * networkResponse);

    NetworkResponses responseCode; // This is an enum and here I get an error


};

#endif  

NetworkResponses实际上是"NetworkResponse.h"中定义的枚举。像这样:

// "NetworkResponse.h":
#include "Response.h"

enum NetworkResponses {
    Success = 1,
    UserAlreadyExists = 2,
    InvalidUsername = 3,
        SecurityError = 4,
        UnknownError = 5

};
class Response;


class NetworkResponse {

public:
    NetworkResponse();
    virtual ~NetworkResponse();

};

但是我收到一个错误:当我尝试编译时,“ NetworkResponses 没有在Response类定义中命名一个类型”。有人可以帮忙吗?我想我错过了一些简单的事情。我想我能够成功地在其他类中使用这个枚举,不知道在这种情况下有什么问题...谢谢。

2 个答案:

答案 0 :(得分:5)

您有一个循环包含依赖项:NetworkResponse.h包含Response.h,反之亦然。这不行。 NetworkResponse.h根本不需要包含Response.h,因此您可以删除包含的内容。

答案 1 :(得分:2)

这个枚举有一个底层类型,在这种情况下为int。所以你可以做到以下几点:

int response = Success;

你也可以这样使用它。请参阅this