如何解决怀疑解决枚举中的名称空间?
| 从下面的问题中,我有点得到枚举和命名空间作用域的工作方式 范围解析运算符是否枚举特定于编译器的扩展? 但是,关于下面的测试代码,我对下面的代码片段中的原因感到困惑: 1)我可以将函数签名中的返回类型称为test_enum :: foo_enum 2)但是不允许“使用名称空间test_enum :: foo_enum \”namespace test_enum {
enum foo_enum {
INVALID,VALID
};
}
// Case 1) this is allowed
test_enum::foo_enum getvalue() {
return test_enum::INVALID;
}
//Case 2) is not allowed
using namespace test_enum::foo_enum;
是否有特定的原因不允许案例2?
还有“枚举”更多地是C样式构造的,并且在C ++代码中更好地避免使用吗?
解决方法
不允许使用“ 1”的原因是因为“ 2”不是名称空间,它是一个枚举。什么是ѭ3works
我相信您正在尝试做的事情是这样的:
namespace foo_enum {
enum foo_enum_t {
INVALID,VALID,};
}
using foo_enum::foo_enum_t;
这使您可以随意扔出foo_enum_t
,但仍然必须输入foo_enum::INVALID
或foo_enum::VALID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。