正在删除c++中的命名空间提升
Deleting namespace boost in c++
我正在eclipse中编写c++。当我添加一个新类时,它会要求一个名称空间。我添加了助推,因为我正在使用助推。当我看到这个类时,eclipse用名称空间boost{}包围了我的类。我认为名称空间是针对java/c#的,而不是c++。此外,我做了一点研究,看起来添加命名空间提升是一个很大的禁忌。所以我删除了命名空间提升。有一个问题,有没有充分的理由让我保留名称空间提升,并在开发周期的后期删除它?
谢谢,我就是这么想的。我不知道eclipse为什么要我添加一个名称空间
嗯@Aaron,"添加"命名空间是一种很好的做法,除非您想回到具有永久冲突库符号或笨拙的libraryx_myfunction
命名约定的C API时代。
事实上,为类选择一个合适的名称空间是非常基本的,我会重新表述一下。这不是
向类中添加命名空间 ;
相反,它是
创建一个命名空间,以便(稍后)向 添加类型和函数。
命名空间用于将代码与LibraryX、LibraryX与LibraryY等分离。因此,选择可能发生冲突的命名空间名称确实是一种糟糕的做法。定义用户定义的类型在std
命名空间中明确禁止(或者随之而来的是未定义的行为)。
将内容放入其他lirary的命名空间会给带来麻烦
- 图书馆的未来扩建
- 这些库中的内部未记录符号
- ADL引起的细微错误(库可能会在不知情的情况下开始查找您的函数,而不是自己的函数)
为什么我应该保留名称空间提升?
为什么?你在扩展boost库吗?我看不出有任何理由保持命名空间提升,事实上,对于小型项目,您根本不需要命名空间。名称空间是为了防止名称冲突而设计的,对于一个小项目,我怀疑你是否会有任何名称空间(不过要小心swap
)。
基本上,你的问题几乎和问我为什么不应该用namespace std
包围我的代码一样,毕竟我使用的是标准库,对吧?
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 删除命名空间STD,专门针对Hex C 程序的剥夺
- 从 type_id_with_cv<>()::p retty_name() 中删除命名空间
- 如何使用模板函数C++ 11 的 using 关键字来删除作用域中的命名空间
- 添加命名空间会删除对类私有成员的好友访问权限
- 为什么在我的项目中删除使用命名空间std会导致错误
- 删除c++中类型名称的命名空间
- 正在删除c++中的命名空间提升
- 我想从这段代码中删除使用命名空间std,但我不确定什么都需要用std::作为前缀