正确使用c++命名空间

Proper use of c++ namespace

我是 c++ 的新手,有一个项目包含一些 classes 分解成单独的头文件和源文件。

对于这些 class 中的一些人来说,访问用于验证键盘输入的共享实用程序方法会非常方便。这是因为我不希望 class 方法被长而相同的代码处理输入流/缓冲区等堵塞。

我发现 this answer 建议为此类问题使用命名空间,但我不明白如何将命名空间合并到我的项目中。

例如,假设我有

// Utility.h
namespace utility {
  method1() {...}
  method2() {...}
  etc..
}

那么这样做不合适吗:

// Foo.h
#include "Utility.h"
class Foo {
  void bar();
}

// Foo.cpp
#include "Foo.h"
void foo::bar {
  ..do stuff..
  utility::method1()
  ..do more stuff..
}

其中 "Foo" 实际上可能是几个 class 相同地使用实用程序?

我的意图:我有兴趣仅在 class 方法的主体中使用实用程序方法,以使代码在多个 class 方法中进行相同检查时更具可读性。

编辑:添加了我引用的问题

是的,您可以在命名空间中定义函数,是的,然后您可以在程序的不同部分使用这些函数,是的,这就是您调用它们的方式。

不,使用命名空间没有样式或编译器问题。

完全没问题。 你甚至可以这样做:

void foo::bar {
  using namespace utility;
  method1():
  ..do more stuff..
}

如果一个 .cpp 需要包含许多 headers(及其各自的命名空间),它可以帮助您 reader 更好地了解您的哪些函数使用了哪个命名空间。

您唯一不应该做的事情是在您的 .h 中 using namespace,因为这样做会迫使任何使用您的 .h 的人也使用您 "used".[=12= 的命名空间]