在标题中我有这样的设置
namespace NS {
typedef enum { GOOD, BAD, UGLY }enum_thing;
class Thing {
void thing(enum_thing elem);
}
}
当然还有另一个与该标头一起使用的cpp文件。然后我有一个包含main()的线程cpp文件。在这个cpp文件中,我使用该枚举传递给方法thing()。
using namespace NS;
int main() {
Thing t();
t.thing(BAD);
}
当然我从G ++得到其他错误,说BAD没有被声明。有关如何克服此错误的任何帮助?
答案 0 :(得分:5)
在更正示例代码中的许多小语法错误后,它编译对我来说很好。检查您是否正确拼写了名称。你能以NS :: BAD的身份访问枚举吗?也许你没有包括正确的标题?确保你有
#include "FileWithEnum.h"
位于顶部。
namespace NS {
typedef enum { GOOD, BAD, UGLY }enum_thing;
class Thing {
public:
void thing(enum_thing elem){}
};
}
using namespace NS;
int main() {
Thing t;
t.thing(BAD);
return 0;
}
自己测试一下: http://codepad.org/Uw0XjOlF
答案 1 :(得分:2)
你能避免使用typedef吗?只是做:
enum Foobar {good, bad, hello};
答案 2 :(得分:0)
它应该工作。它对我有用(Mystagogue的变体也应该起作用)。我知道你有其他一些错误信息吗?
你可能只需要修改标头语法正确,比如在类Thing等的末尾放一个分号。当标题正常时,关于不在命名空间中的BAD的消息也应该消失。 / p>