5

私にはクラスの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誰か助けてください?? シンプルなものが欠けていると思います。この列挙型を他のクラスで正常に使用できたと思いますが、この場合の何が問題なのかわかりません...ありがとう。

4

2 に答える 2

5

循環的なインクルード依存関係があります:NetworkResponse.hインクルードResponse.hとその逆。これは機能しません。NetworkResponse.hまったく含める必要がないResponse.hため、そのインクルードを削除できます。

于 2013-02-28T12:13:51.010 に答える
2

この列挙型には、基になる型 (この場合は int) があります。したがって、次のことができます。

int response = Success;

こんな使い方もできます。これを参照してください。

于 2013-02-28T11:48:54.680 に答える