当前位置:   iOS > 正文

使用名称范围

c++,namespaces,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我尝试了下面这段代码.当我编译时,我得到错误,那里有first_var的模糊实例,而我在最后一个cout之前引入了使用命名空间second_space

我想这是因为最后一个cout使用两个名称空间.命名空间没有覆盖概念?无论如何,命名空间范围可以结束,还是从使用命名空间点继续到文件末尾?

#include
namespace first_space{
    int first_var;
}
namespace second_space{
    int first_var = 1;
}
int main()
{
    cout<<"Hello World"<

编辑1:

我在下面尝试过类似的东西.声明在main中具有相同名称的变量,为其分配值1,然后使用下面的命名空间使用.但是我看到,first_var的值在最后两个cout中打印为1.这里没有歧义.那么命名空间没有任何影响?为什么会这样?

#include
namespace first_space{
    int first_var;
}
namespace second_space{
    int first_var = 1;
}
int main()
{
    int first_var =1 ;
    using namespace first_space;
    cout<<"Hello World"<

输出:

Hello World
First Namespace Variable using namespace identifier:0
First Namespace Variable using using identifier:1
Second Namespace Variable using using identifier:1

CoryKramer.. 5

是的,你是正确的,在第二个using语句之后,变量first_var现在是不明确的,因为就名称查找而言,两个名称空间都是有效的并且具有相同的优先级.

这两个解决方法是

a)添加大括号以强制执行匿名范围(现场演示)

{
using namespace first_space;
cout << "First Namespace Variable using using identifier:" << first_var << endl;
}

{
using namespace second_space;
cout << "Second Namespace Variable using using identifier:" << first_var << endl;
}

b)删除using关键字并直接使用命名空间范围

cout << "First Namespace Variable using using identifier:" << first_space::first_var << endl;
cout << "Second Namespace Variable using using identifier:" << second_space::first_var << endl;

我个人会选择b.首先添加名称空间的主要原因之一是避免歧义问题,因此用一堆using语句污染当前作用域会破坏这一点.



1> CoryKramer..:

是的,你是正确的,在第二个using语句之后,变量first_var现在是不明确的,因为就名称查找而言,两个名称空间都是有效的并且具有相同的优先级.

这两个解决方法是

a)添加大括号以强制执行匿名范围(现场演示)

{
using namespace first_space;
cout << "First Namespace Variable using using identifier:" << first_var << endl;
}

{
using namespace second_space;
cout << "Second Namespace Variable using using identifier:" << first_var << endl;
}

b)删除using关键字并直接使用命名空间范围

cout << "First Namespace Variable using using identifier:" << first_space::first_var << endl;
cout << "Second Namespace Variable using using identifier:" << second_space::first_var << endl;

我个人会选择b.首先添加名称空间的主要原因之一是避免歧义问题,因此用一堆using语句污染当前作用域会破坏这一点.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8365
推荐阅读
  • 如何解决《iOS有类似Android的RecyclerView吗?》经验,为你挑选了1个好方法。android,android-layout,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维... [详细]

  • 如何解决《不使用'&',C++模板无法推断引用类型》经验,为你挑选了2个好方法。c++,templates,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《如何在UITableView中使用外部数据源》经验,为你挑选了1个好方法。uitableview,uiviewcontroller,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,jso... [详细]

  • 如何解决《Android上是否有任何类型的粒子发射器,如iOSCAEmitterLayer用于圆形发射器?》经验,为你挑选了0个好方法。animation,android,ios,particle-system,caemitterlayer... [详细]

  • 如何解决《如何初始化Direct到对象在C++中工作?》经验,为你挑选了1个好方法。c++,c++11,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]

  • 如何解决《无法传递函数值来设置数组大小C++》经验,为你挑选了1个好方法。c++,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员... [详细]

  • 如何解决《枚举数组是Swift的枚举?》经验,为你挑选了1个好方法。cocoa-touch,swift,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]

  • 如何解决《IOSSwift-自定义相机覆盖》经验,为你挑选了1个好方法。camera,ios,swift,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]

  • 如何解决《使用boost::function和boost::bind》经验,为你挑选了1个好方法。c++,boost,ios,linux,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,un... [详细]

  • 如何解决《为什么不能在编译时解决运行时多态?》经验,为你挑选了5个好方法。c++,polymorphism,ios,https,算法,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix... [详细]

  • 如何解决《应用程序终止时推送通知》经验,为你挑选了0个好方法。push-notification,apple-push-notifications,ios,swift2,swift,go,DevBox,在线流程图,编程,编程问答,程序员,开... [详细]

  • 如何解决《IOSShare扩展:如何阅读笔记帖子》经验,为你挑选了1个好方法。ios,ios-app-extension,ios8-share-extension,编辑器,https,html,DevBox,在线流程图,编程,编程问答,程序... [详细]

  • 如何解决《基类对象的C++向量》经验,为你挑选了2个好方法。c++,容器,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站... [详细]

  • 如何解决《滚动时获取RecycleView的中心可见项》经验,为你挑选了3个好方法。android,scroll,android-recyclerview,算法,ios,xml,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 如何解决《如何开发一个自定义的UICollectionViewLayout,它具有与自定义单元格交错的列?》经验,为你挑选了1个好方法。ios,swift,android,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工... [详细]

  • 如何解决《我可以使Xcode的调试器以编程方式中断吗?》经验,为你挑选了2个好方法。debugging,xcode,ios,swift,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码... [详细]

  • 如何解决《NSURLConnection的奇怪错误代码4294966295》经验,为你挑选了1个好方法。objective-c,nsurlconnection,ios,ios9,xcode,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《如何重现相同状态的基于随机的算法》经验,为你挑选了1个好方法。c++,random,algorithm,c++11,算法,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《故事板警告:iOS8.0之前的第一个基线布局属性》经验,为你挑选了1个好方法。warnings,storyboard,ios,xcode-storyboard,iphone,xcode,DevBox,在线流程图,编程,编程问答,程... [详细]

  • 如何解决《如何在动画时使用UIButton》经验,为你挑选了1个好方法。animation,uibutton,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间... [详细]

相关标签
  

闽ICP备14008679号