在仅标头库中隐藏实现



我尝试使用实现命名空间,但是当我"使用命名空间"它时,它会拉入整个实现命名空间,使其无用。

namespace library {
 namespace implementation {
  //implementation
 }
 using namespace implementation
 //visible identifiers
}

有没有办法隐藏实现,而不需要在使用实现中的任何内容之前使用"implementation::"?

使其无用

好吧,这不是没用的,你只是不能using namespace它。您必须在其中的名称前面显式附加implementation::。出于这个原因,选择一个较短的名称(detail通常用于此目的的 c++ 项目中)可能是有意义的。

另外,我想指出的是,仅标头和实现隐藏是两个有些冲突的要求。如果你确实需要隐藏实现,你不能只使用标题。

最新更新