删除c ++中的命名空间提升

时间:2014-04-14 19:51:33

标签: c++ eclipse boost namespaces

我在eclipse中写c ++。当我添加一个新类时,它会要求命名空间。我添加了提升,因为我正在使用提升。当我看到类eclipse用命名空间boost {}包围我的类时。我认为命名空间是针对java / c#而不是c ++。此外,我做了一些研究,看起来添加命名空间提升是一个很大的不。所以我删除了命名空间boost。有一个问题,是否有充分的理由说明为什么我应该保持名称空间提升并且将在以后的开发周期中删除它?

2 个答案:

答案 0 :(得分:4)

  

谢谢,这就是我的想法。我不知道eclipse为什么要我添加命名空间

呃。 @Aaron,"添加"命名空间是一种很好的做法,除非您希望被重新带回C API的时代,其中包含永久冲突库符号 clumy libraryx_myfunction命名约定。

事实上,为你的课程选择一个合适的命名空间是如此基本,以至于我重写了这一点。它不是

  

在您的课程中添加名称空间 ;

而不是

  

为您的(稍后)添加类型和功能创建名称空间

命名空间用于将您的代码与LibraryX和LibraryX从LibraryY等分开。因此,选择可能发生冲突的命名空间名称确实是不好的做法。定义用户定义的类型在std命名空间(或未定义的行为)中明确地 禁止

将内容放入其他lirary的名称空间中会遇到麻烦

  • 图书馆的未来扩展
  • 这些图书馆中的内部,未记录的符号
  • ADL引起的微妙错误(图书馆可能会在不知情的情况下开始寻找您的功能而不是它自己)

答案 1 :(得分:2)

  

我应该保持名称空间提升的一个很好的理由吗?

为什么呢?你在扩展升级库吗?我没有看到任何保持名称空间提升的理由,事实上,对于小项目,你根本不需要命名空间。命名空间旨在防止名称冲突,对于一个小项目,我怀疑你有没有(虽然注意swap)。

基本上,您的问题几乎与询问为什么我不应该使用namespace std包围我的代码一样,毕竟我正在使用标准库,对吧?