我有一个如下情况:
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
};
};
我的问题是 - 如何从作为另一个名称空间的父级的namspace中的类继承?
Billy3
答案 0 :(得分:13)
您需要指定命名空间,在本例中为全局命名空间:
class criterion : public ::criterion
请注意,c ++没有指定任何导航命名空间的方法,就像它们是树一样。例如,您不能使用“..”或任何其他简写来指定“父”命名空间 - 您必须使用其名称。
答案 1 :(得分:8)
以“::”
开头例如
class criterion : public ::criterion {};
答案 2 :(得分:3)
这为我编译,基本上只是显式地显示父类的命名空间:
class A
{};
namespace B {
class A : public ::A
{};
namespace C {
class A : public B::A
{};
}
};
答案 3 :(得分:3)
简化的基本C ++命名空间规则是: