// classone.h
namespace NameOne
{
class ClassOne
{
public:
...
void FuncOne();
...
};
}
// *** Method 1 ***
// classone.cpp
namespace NameOne // always define member functions inside the namespace
{
void ClassOne::FuncOne()
{ ... }
}
// *** Method 2 ***
// classone.cpp
void NameOne::ClassOne::FuncOne() // always prefix the namespace
{ ... }
问题>我已经看到两种方法来处理CPP文件中的命名空间。在大型项目中哪种方法更好(即方法1或方法2)
谢谢
答案 0 :(得分:4)
如果它不在头文件中,只要你一致就没关系。我个人更喜欢第一种方法,因为当您阅读函数名称时,命名空间并不那么相关。
答案 1 :(得分:1)
这是我使用using namespace X
的唯一情况
我认为这是一个好的用法(但我仍在考虑它),但愿意听到其他观点。
// Bar in namespace Foo
#include "Bar.h"
// Only do this for the class I am defining
using namespace Foo;
Bar::Bar()
{
}
void Bar::stop()
{
}
// etc
我一直在努力:
// Bar in namespace Foo
#include "Bar.h"
// Only do this for the class I am defining
using Foo::Bar;
Bar::Bar()
{
}
void Bar::stop()
{
}
// etc
答案 2 :(得分:0)
我想这完全取决于您个人的偏好,除此之外,还取决于代码库中已经使用的内容,您正在编写代码。
答案 3 :(得分:0)
我更喜欢添加using namespace NameOne
。方法1增加了缩进,方法2使声明更长,但这只是个人意见。只需在代码(和代码库)中保持一致。
答案 4 :(得分:0)
我确信我记得在C ++中引入名称空间的时候,方法2是最好的方法,当然比方法1更受欢迎,这就是我一直使用的方法。
答案 5 :(得分:0)
使用命名空间的原因通常是在具有一致功能的组/包中收集类/方法,以使它们与其他库或命名空间中的定义(字面和功能)不一致。
因此,我更喜欢cpp文件中的using namespace Foo
,因为大多数时候我在同一名称空间中引用不同的类。如果我需要使用另一个命名空间中的类,我绝对使用Foo2::
后缀。它保持已实现的命名空间与其他命名空间之间的距离。