将函数限制为命名空间
Restrict functions to namespace
我正在构建某种神经网络库。由于我以前从未构建过任何库,因此我对样式有一些疑问。
在我的项目中,例如有以下类:
NeuralNetwork, Layer, Util
全部在一个命名空间中。现在,Layer
和Util
需要有一些公共功能,因为它们将在NeuralNetwork
中调用。但是由于NeuralNetwork
是唯一应该可供"世界其他地方"访问的类(顺便说一句,创建单个Layer
对象没有任何意义(。
那么有没有办法只能在该命名空间中的其他类中使用这些函数呢?还是有更优雅的方法?我想过扩展类并只制作私有函数,但这没有任何意义,并且会使代码更丑陋,因为主类不是从其他类派生的,而是利用它们。
听起来您正在寻找匿名命名空间。我承认,这个名字有点奇怪。
基本上,在下面的代码中,foo
仅适用于.cpp文件的其余部分:
namespace {
class Foo { public: Foo(int) {} } ;
}
在后台,编译器将创建一个唯一的名称,该名称不能与任何其他命名空间冲突 - 甚至不能与其他库的匿名命名空间冲突!你不在乎那个隐藏的名字。在.cpp文件中,您可以直接使用Foo
。
相关文章:
- 在命名空间中定义函数还是限定函数
- CUDA内核和数学函数的显式命名空间
- 在命名空间中使用全局命名空间中的函数
- 是否可以将函数导入命名空间,但不能导出它?
- 使用另一个命名空间中的函数C++
- Visual Studio 无法解决类和命名空间中重载的明确函数
- 命名空间更改函数定义
- C++命名空间中调用 void 函数的错误
- C++ 17 个友元函数声明和内联命名空间
- MFC 函数来自 :: 命名空间?
- 使用类指针重载C++命名空间函数模板专用化替代方法?
- 在头文件中添加命名空间函数
- 命名空间函数的多重定义
- 在多个 cpp 文件中重用未命名的命名空间函数
- 如何正确声明命名空间函数
- 使用 libclang 解析命名空间函数
- C++命名空间函数
- 内联命名空间函数时出错
- 递归std::functional与递归匿名命名空间函数.使用哪一个
- 如何在命名空间函数中使用pragma weak