我正在构建某种神经网络库。由于我以前从未建过任何图书馆,所以我对这个风格有一些疑问 在我的项目中,例如有以下类:
NeuralNetwork, Layer, Util
所有在一个命名空间中。现在,Layer
和Util
需要有一些公共函数,因为它们将在NeuralNetwork
中调用。但是,NeuralNetwork
是唯一一个应该可以访问世界其他地方的课程。 (顺便说一句,创建单个Layer
对象没有任何意义)。
那么有什么方法我只能在该命名空间中的其他类中使用这些函数?还是有更优雅的方法?我想扩展这个类并只创建私有函数但是这没有任何意义,并且会使代码变得更加丑陋,因为主类不是从其他类派生出来的,而是使用它们。
答案 0 :(得分:0)
听起来你正在寻找匿名命名空间。我承认,有点奇怪的名字。
基本上,在以下代码中,foo
仅 可用于.cpp文件的其余部分:
namespace {
class Foo { public: Foo(int) {} } ;
}
在幕后,编译器将创建一个唯一的名称,不能与任何其他名称空间冲突 - 甚至不是其他库的匿名名称空间!你不在乎这个隐藏的名字。在.cpp文件中,您可以直接使用Foo
。