【发布时间】:2014-09-30 10:02:27
【问题描述】:
在 C++ 中,匿名命名空间等价于:
namespace $$$$ {
//something
}
using namespace $$$$;
其中 $$$$ 是某种唯一标识符。然后,匿名命名空间对于不应在编译单元之外看到的代码很有用。
到目前为止一切都很好,但是最近我开始使用模板编写一些代码,这些代码必须在标头中,因此使用匿名命名空间没有多大意义,因为仅仅包含标头就会使隔离效果无效。
那么问题是,在这种情况下建议的方法是什么?我开始使用一个名为 Private 的命名空间。它并没有真正阻止任何想要使用内部标识符的人,但至少它减少了名称冲突到 id “Private”。
还有更好的方法吗?有什么建议吗?
【问题讨论】:
-
AFAIK 这就是你所能做的,模板库经常为此目的使用命名空间,例如
detail。 -
理想情况下,您的所有代码都应该在某种命名空间中。将您的模板放入名为 Utility、Alpha 或 MyWork 之类的命名空间中。并将帮助功能也放在那里。
-
感谢 user657267;那是我正在寻找的确认。我害怕我错过了显而易见的事情。
标签: c++ namespaces header-files anonymous