【问题标题】:Accessing Parent Namespace in C++在 C++ 中访问父命名空间
【发布时间】:2009-07-16 18:31:00
【问题描述】:
我有一个类似下面的场景:
class criterion
{
// stuff about criteria...
};
namespace hex {
class criterion : public criterion //does not compile
{ //This should inherit from the
//A hex specific criterion //criterion class in the global namespace
};
};
我的问题是——如何从另一个命名空间的父命名空间中的类继承?
比利3
【问题讨论】:
标签:
c++
inheritance
namespaces
【解决方案1】:
您需要指定命名空间,在本例中为全局命名空间:
class criterion : public ::criterion
请注意,c++ 没有指定任何导航命名空间的方法,就好像它们是一棵树一样。例如,您不能使用“..”或任何其他简写来指定“父”命名空间 - 您必须使用其名称。
【解决方案2】:
以“::”开头
例如
class criterion : public ::criterion {};
【解决方案3】:
简化的基本 C++ 命名空间规则是:
- 您可以访问父命名空间路径中的任何内容,而无需指定命名空间。
- 您可以通过仅指定相对路径来访问子命名空间路径中的任何内容。
- 其他一切都需要完整的命名空间规范。
【解决方案4】:
这是为我编译的,基本上只是明确显示父类在哪个命名空间中:
class A
{};
namespace B {
class A : public ::A
{};
namespace C {
class A : public B::A
{};
}
};