将函数限制为命名空间

Restrict functions to namespace

本文关键字:命名空间 函数      更新时间:2023-10-16

我正在构建某种神经网络库。由于我以前从未构建过任何库,因此我对样式有一些疑问。
在我的项目中,例如有以下类:

NeuralNetwork, Layer, Util

全部在一个命名空间中。现在,LayerUtil需要有一些公共功能,因为它们将在NeuralNetwork中调用。但是由于NeuralNetwork是唯一应该可供"世界其他地方"访问的类(顺便说一句,创建单个Layer对象没有任何意义(。

那么有没有办法只能在该命名空间中的其他类中使用这些函数呢?还是有更优雅的方法?我想过扩展类并只制作私有函数,但这没有任何意义,并且会使代码更丑陋,因为主类不是从其他类派生的,而是利用它们。

听起来您正在寻找匿名命名空间。我承认,这个名字有点奇怪。

基本上,在下面的代码中,foo 仅适用于.cpp文件的其余部分:

namespace {
  class Foo { public: Foo(int) {} } ; 
}

在后台,编译器将创建一个唯一的名称,该名称不能与任何其他命名空间冲突 - 甚至不能与其他库的匿名命名空间冲突!你不在乎那个隐藏的名字。在.cpp文件中,您可以直接使用Foo