c++ - 如果我需要在 header 中使用匿名命名空间怎么办?

标签 c++ namespaces header-files anonymous

在 C++ 中,匿名命名空间等同于:

namespace $$$$ {
  //something
}
using namespace $$$$;

其中 $$$$ 是某种唯一标识符。匿名命名空间对于不应在编译单元外看到的代码很有用。

到目前为止一切顺利,但是最近我开始用模板编写一些代码,这样的代码必须在 header 中,因此使用匿名命名空间没有多大意义,因为仅包含 header 会使隔离效果无效。

那么问题来了,在这种情况下,建议的方式是什么?我开始使用名为 Private 的命名空间。它并没有真正阻止任何想要使用内部标识符的人,但至少它减少了与 id“Private”的名称冲突。

有没有更好的方法?有什么建议吗?

最佳答案

坚持使用您的 Private namespace(或使用更流行的 detail)。请记住,C++ 访问机制背后的主要思想是让滥用它们变得困难,而不是不可能。保护自己免受意外伤害,而不是恶意攻击。

关于c++ - 如果我需要在 header 中使用匿名命名空间怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118016/

相关文章:

c++ - 'for(auto &str : vec)' 内部 for 循环的目的是什么?

c++ - 在 Visual C++ 2003 中删除调试符号

xml - 将命名空间添加到 xml 时使用 xslt 解析 xml 失败

c++ - 如何解决此 header 包含循环?

c++ - .c 与 .cc 与 .cpp 与 .hpp 与 .h 与 .cxx

c++ - 静态断言失败,返回 "Windows headers require the default packing option..."

c++ - Windows 上的 Qt 5.4.0,在某些情况下在 QWidget 上调用的 isActive() 返回明显错误的值

c++ - c模板函数参数类型的选择

QT QML inputMethodHints

C# 命名空间和程序集最佳实践