【问题标题】:Deleting namespace boost in c++在 C++ 中删除命名空间提升
【发布时间】:2014-05-28 22:34:46
【问题描述】:

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

【问题讨论】:

    标签: c++ eclipse boost namespaces


    【解决方案1】:

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

    嗯。 @Aaron,“添加”命名空间是一种很好的做法,除非你想回到 C API 的时代,因为库符号很笨拙libraryx_myfunction命名约定。

    事实上,为你的类选择一个合适的命名空间是如此的基本,我会重新表述一下。这不是

    为您的班级添加命名空间

    其实是

    为您创建一个命名空间(稍后)将类型和函数添加到

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

    将东西放入其他图书馆的命名空间是自找麻烦

    • 库的未来扩展
    • 这些库中的内部未记录符号
    • 由于ADL 导致的细微错误(库可能会在不知情的情况下开始查找您的函数而不是自己的函数)

    【讨论】:

      【解决方案2】:

      我应该保留命名空间提升的充分理由?

      为什么?你在扩展boost库吗?我认为没有任何理由保留命名空间提升,事实上,对于小型项目,您根本不需要命名空间。命名空间旨在防止名称冲突,对于一个小型项目,我怀疑你会有任何名称空间(不过要小心swap)。

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

      【讨论】:

      • 谢谢,这就是我的想法。我不知道eclipse为什么要我添加命名空间。
      • @Aaron 您没有“添加命名空间”。您向命名空间“添加类型”。不要在没有命名空间的情况下开始!看我的回答。
      猜你喜欢
      • 1970-01-01
      • 2010-12-14
      • 2011-03-04
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多