正确使用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= 的命名空间]
我是 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= 的命名空间]