拥有与命名空间同名的变量是否正确
Is it correct to have a variable with the same name as a namespace
这样做
正确吗?
namespace name {
int name;
}
void proc(int name)
{
name::name = name;
}
int main()
{
int name = name::name;
return 0;
}
它在海湾合作委员会中工作。但是对于标准编译器和其他编译器,这可以吗?
是的,这没关系,我们需要看看范围解析运算符在这种情况下是如何工作的。如果我们看一下草案C++标准部分3.4.3
限定名称查找实际上有一个非常相似的例子,它说(强调我的):
如果嵌套名称说明符中的 :: 范围解析运算符前面没有 decltype-说明符,则查找该 :: 前面的名称仅考虑专用化为类型的命名空间、类型和模板。如果找到的名称未指定命名空间或类、枚举或依赖类型,则程序格式不正确。[ 示例:
class A {
public:
static int n;
};
int main() {
int A;
A::n = 42; // OK
A b; // ill-formed: A does not name a type
}
—结束示例 ]
是的,这样做完全没问题。命名空间实际上是为了在代码/项目的大小变大后解决此类问题而设计的。
这是查看有关C++的好地方。
相关文章:
- 如何检查变量是否是C++中的地图?
- 如何更好地检查两个 char 变量是否在一组值中?
- 模板变量是否允许在多个翻译单元中并有效合并?
- 如何检查模板类中的变量是否为字符串类型?
- 如何检查 int 变量是否包含合法(非陷阱表示)值?
- "new"创建的实例的所有成员变量是否都存在于堆上而不是堆栈上?
- C++11:16 字节原子<>变量是否在 16 字节边界上自动对齐,从而允许CMPXCHG16B指令?
- 程序如何知道静态变量是否需要初始化?
- 检查私有成员变量是否在一定范围内,如果没有调整
- C++ 如何检查 char 变量是否未定义(未初始化)
- 是否可以检查变量是否位于 L1/L2/L3 缓存中
- 初始化命名空间中的变量是否类似于将它们初始化为类成员?
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- 变量是否会自动转换为函数所需的类型作为适当的参数
- const变量是否可以在具有默认值的参数中赋值(作为可选参数)
- 如何对私有变量是否已更改进行单元测试
- 将常量引用成员设置为临时变量是否安全
- 如何检查类中定义的枚举类型变量是否被分配给?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- "decltype(auto)"变量是否有任何实际用例?