我正在构建某种神经网络库。由于我以前从未构建过任何库,所以我对样式有一些疑问。
在我的项目中有例如以下类:
NeuralNetwork, Layer, Util
全部在一个命名空间中。现在,Layer
和 Util
需要一些公共(public)函数,因为它们将在 NeuralNetwork
中调用。但由于 NeuralNetwork
是唯一应该可供“世界其他地方”访问的类(顺便说一句。创建单个 Layer
对象没有任何意义).
那么有什么方法可以让我只能在该命名空间的其他类中使用这些函数吗?还是有更优雅的方法?我考虑过扩展该类并只创建私有(private)函数,但这没有任何意义,而且会使代码更丑陋,因为主类不是从其他类派生的,而是使用它们。
最佳答案
听起来您正在寻找匿名命名空间。有点奇怪的名字,我承认。
基本上,在以下代码中,foo
仅可用于 .cpp 文件的其余部分:
namespace {
class Foo { public: Foo(int) {} } ;
}
在幕后,编译器将创建一个唯一的名称,不能与任何其他 namespace 冲突的名称 - 甚至不能与其他库的匿名 namespace 冲突!你不关心那个隐藏的名字。在您的 .cpp 文件中,您可以直接使用 Foo
。
关于c++ - 将函数限制在命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231608/