假设在头文件中,我们有这样的东西。
namespace impl_{
int do_something_(){
return 1;
}
}
int do_something(){
using namespace impl_;
return do_something_();
}
impl_::do_something_()
被很好地隐藏了,但它被“包含”在输出对象文件中。
如果我们希望不包含该功能,我们需要执行inline
或static
...或添加一个名称空间???
namespace impl_{
namespace {
int do_something_(){
return 1;
}
}
}
......实际上,这也有效......
namespace {
namespace impl_{
int do_something_(){
return 1;
}
}
}
请注意这对头文件和实现文件都有意义,但对于头文件来说这是一个更大的问题。
我很困惑 - 在头文件中执行此类“隐藏实现代码”的最佳方式/最佳做法是什么?