【发布时间】:2010-01-17 21:04:24
【问题描述】:
如果您将 ns2 作为 ns1 的子命名空间,并且在 ns2 类的标头中使用 ns1 类,您是否需要像在 ns1 和 ns2 不相关时那样显式地标出它?
例如
button.h
namespace ns1
{
class Button
{
...
};
}
对话框.h
include "button.h"
namespace ns1
{
namespace ns2
{
class TestDialog
{
Button *pButton;
};
}
}
应该是这样吧?看来我必须将 dialog.h 更改为:
namespace ns1
{
----->class Button;
namespace ns2
{
但我不太清楚为什么。命名空间不继承吗?如果我不进行此更改,我会收到有关“未解析符号 ns1::ns2:Button::...”的链接器错误。
【问题讨论】:
-
你为什么不测试一下?那你就不用在这里问了。
-
因为我想知道它是如何工作的,而不仅仅是破解代码直到它最终编译并且不知道为什么。
-
不回答您的问题,但在使用嵌套命名空间之前我真的会三思而后行 - 我怀疑您的代码是否足够复杂以保证它们的有效性。 C++ 命名空间是名称冲突的解决方案 - 如果您的名称不冲突,则不需要它们。
-
也许你是对的,我怀疑是被 Java 包感染了。
标签: c++