c++ - 将函数限制在命名空间

标签 c++ class namespaces

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

NeuralNetwork, Layer, Util

全部在一个命名空间中。现在,LayerUtil 需要一些公共(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/

相关文章:

java - 将类(class)转换到自制类(class)

c++ - 在 C++ 中的运行时声明对命名空间的引用

python - settings.py 中的命名空间问题

c++ - 哪个命名空间包含这个友元函数的声明?

c++ - iTunes COM 接口(interface) - 无法将歌曲添加到资料库

java - 如果我创建了父类的数组,如何通过数组对象访问子类的方法?

c++ - 字符串保留期间的 glibc malloc 死锁

c# - 从类中调用方法

c++ - 访问数组中的元素

c++ - 如何增加进程中运行的线程数?