C嵌套的命名空间定义,以::开头
发布时间:2020-12-16 06:50:32 所属栏目:百科 来源:网络整理
导读:在§7.3.1?1(n4527)草案中,命名空间定义的语法包含: enclosing-namespace-specifier: identifier enclosing-namespace-specifier :: identifier 这可以防止名称空间定义具有以“::”开头的标识符 namespace d{ namespace e {} }namespace ::d::e{void foo()
在§7.3.1?1(n4527)草案中,命名空间定义的语法包含:
解决方法
以::开头的行向编译器指示您希望使用全局命名空间.例如:
void foo() { std::cout << "1" << std::endl; } namespace d { void foo() { std::cout << "2" << std::endl; } void example() { foo(); ::foo(); } } 此代码将打印出来: 2 1 第一个调用转到d :: foo(),第二个调用转到全局命名空间中的foo().因此,在命名空间的开头放一个::当你试图为它创建一个命名空间时,看起来你将d放在全局命名空间中,这实际上没有任何意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容