在这里忍受我。我试图弄清楚你在什么时候画出关于将辅助方法放入 anon、detail 命名空间、私有和创建 pimpl 或朋友类的界限。
这是我的看法。请让我知道你的想法。
所以,如果我有 foo.hpp foo.cpp
而且我有一些bar
不访问任何数据成员的免费功能,foo
而且没有客户端需要知道这些免费功能,只有foo.cpp
's 的方法需要它们,只需将它们直接放在 foo.cpp 的 anon 命名空间中即可完成。
但是,如果bar
需要访问 foo 的数据成员,我们可以创建 foo 的bar
私有方法。但这意味着即使 foo 的客户端并不真正关心bar
,但每次bar
更改时,我们都会重新编译。
(这部分我有点模糊):但是,至少在这种情况下使用详细名称空间,可以帮助 foo.hpp 的读者不必费心去看bar
,因为他们真的不需要知道它。这是详细命名空间约定的一般用例吗?
现在,如果我们有一堆 bar_1、bar_2...bar_n 并且它们相互关联并且它们需要访问数据成员,我可以baz
为 foo 创建一个朋友类,并将bar
s 放在那里。
但是,如果我真的很担心编译时间和隐藏界面,我可以求助于 pimpl(这部分再次非常模糊,通常如果我看到这个,警报会响起并告诉我设计中有问题)。
你的意见...