2013-02-28 104 views
4

我有一个类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类的定义,当我尝试编译。有人可以帮忙吗?我觉得我缺少一些简单的东西。我想我能够成功地在其他类中使用这个枚举,不知道在这种情况下有什么问题......谢谢。

+1

是相同的命名空间内? – 2013-02-28 11:44:58

+2

我唯一看到的,但不应该引起任何问题的是第二个'#inc'后面的分号。你有可能创建一个有这个问题的[SSCCE](http://sscce.org/)并告诉我们? – 2013-02-28 11:45:07

+0

这里还有一件事,你的枚举和类在你的头文件中声明的顺序与你向我们展示的顺序完全一样吗? – 2013-02-28 11:51:32

回答

6

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

+0

是的,但我实际上也在NetworkResponse类中使用Response对象,例如, \t void(** callBack)(void * pt2Object,Response * genericResponse); 所以,如果我从这里删除#include“Response.h”它将不会编译?谢谢, – user2054339 2013-02-28 12:22:29

+0

@ user2054339然后_declare_这个'Response'类,就像你在响应头文件中声明'NetworkResponse'类一样。 – 2013-02-28 12:25:21

+0

我声明,请参阅我的更新后 – user2054339 2013-02-28 12:30:45

-1

这可能会更好地工作(还没有尝试过,虽然)

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

}NetworkResponses ; 
+1

这实际上应该没有区别。 – juanchopanza 2013-02-28 11:47:34

+0

是的,仍然是同样的问题。 – user2054339 2013-02-28 11:48:55

+0

是我的坏我谈太快了,我只是有个习惯是这样写的,并认为这可能会做一个区别,但一个快速的研究看起来后实际不作任何。 – fenouil 2013-02-28 11:54:19

2

此枚举在这种情况下,基础类型,int类型。所以你可以做到以下几点:

int response = Success; 

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

+0

这会使代码编译,但不能解决问题。 – 2013-02-28 11:50:24

+0

这是一种解决方法,我同意。 – 2013-02-28 11:50:58

+0

似乎是一个工作,但并没有解决问题确实 – user2054339 2013-02-28 12:06:34