【发布时间】:2013-02-26 13:35:08
【问题描述】:
我熟悉以下命名空间的使用。
在头文件中(例如people.h)我描述了一个名字空间的接口。例如:
namespace people{
int getAge(str Name);
void setName(str Name);
}
然后在people.cpp我从空间名称定义方法:
#include "people.h"
int people::getAge(str Name) {
something_1;
something_2;
}
void people::setName(str Name) {
something_1;
}
但是,在我拥有的头文件中,我看到除了namespace people,还有其他命名空间的接口(例如namespace dogs)。而这些命名空间并没有在people.cpp 文件中定义。
所以,我假设(由于某些奇怪的原因)namespace dogs 的接口被放入people.h,然后名称空间 dog 被定义在“dogs.cpp”文件中。因此,换句话说,我假设在两个不同的 cpp 文件中定义了两个不同的名称空间,但它们的接口在一个头文件中描述。但是,这个假设似乎是错误的,因为我发现有很多头文件声明了“命名空间狗”。
所以,我假设 2people.h" 文件中的 namespace dogs 有另一个功能,但我不知道它是什么功能。有人可以帮我吗?
添加
我试图理解的代码不是我写的,它运行良好。所以,这应该是有道理的。可能是我不够清楚。所以,我试着举个例子:
在头文件 (people.h) 我有:
namespace etet
{
class date;
}
namespace xsystem{
class estimation_module;
}
namespace people {
a_lot_of_different_stuff;
}
然后people.cpp 定义了属于人名空间的所有方法。
【问题讨论】:
-
我什至不知道你能做到。
-
在不知道使用这个狗命名空间的代码的情况下,我们只能推测。
-
I assumed that two different name spaces are defined in two different cpp files but their interface is described in one header file.这听起来不错。 -
这没有意义......
-
我的猜测是您正面临一些简单的前向声明(
people.h需要来自dogs命名空间的某些类型,但不包括它们的完整定义以减少标头之间的依赖关系),但没有更精确的代码,很难说。
标签: c++ interface namespaces header-files