我尝试使用实现命名空间,但是当我"使用命名空间"它时,它会拉入整个实现命名空间,使其无用。
namespace library {
namespace implementation {
//implementation
}
using namespace implementation
//visible identifiers
}
有没有办法隐藏实现,而不需要在使用实现中的任何内容之前使用"implementation::"?
使其无用
好吧,这不是没用的,你只是不能using namespace
它。您必须在其中的名称前面显式附加implementation::
。出于这个原因,选择一个较短的名称(detail
通常用于此目的的 c++ 项目中)可能是有意义的。
另外,我想指出的是,仅标头和实现隐藏是两个有些冲突的要求。如果你确实需要隐藏实现,你不能只使用标题。