这是一个代码片段来演示我的问题.
namespace N{
enum E { A, B, C, D };
}
int main(){
using N::E;
E e = A; // syntax error: 'A' is not declared
}
Run Code Online (Sandbox Code Playgroud)
最后一行给出了语法错误.我想使用的名称N::A,N::B,N::C以及N::D在没有命名空间限定的主要功能N::.但我不希望做以下两件事情
(1)我不想说using namespace N,因为那将导入N中的其他所有内容.
(2)我不想说using N::A,using N::B等了枚举的每一个成员.因为那时如果我想修改枚举,我也必须改变我的主要功能.更不用说额外的打字是乏味且容易出错的.
我试着自己寻找答案,但不能.任何帮助表示赞赏.
如果您可以更改E已定义的标头,请尝试使用内联命名空间.
namespace N {
inline namespace Enums {
enum E { A, B, C, D };
}
}
int main() {
using namespace N::Enums;
E e = A;
}
Run Code Online (Sandbox Code Playgroud)
内联命名空间中的所有名称都在封闭的命名空间中可见,N就像内联命名空间不存在一样,但这允许您导入所有名称和所需的名称.
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |