在C++中访问父命名空间

Bil*_*eal 13 c++ inheritance namespaces

我有一个类似以下的场景:

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
     };

};
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 如何从作为另一个名称空间的父级的namspace中的类继承?

Billy3

小智 13

您需要指定命名空间,在本例中为全局命名空间:

 class criterion : public ::criterion 
Run Code Online (Sandbox Code Playgroud)

请注意,c ++没有指定任何导航命名空间的方法,就像它们是树一样.例如,您不能使用".."或任何其他简写来指定"父"命名空间 - 您必须使用其名称.


str*_*ika 8

从...开始 "::"

例如

class criterion : public ::criterion {};
Run Code Online (Sandbox Code Playgroud)


Shi*_*hah 6

简化的基本 C++ 命名空间规则是:

  • 您可以在不指定命名空间的情况下访问父命名空间路径中的任何内容。
  • 您可以通过仅指定相对路径来访问子命名空间路径中的任何内容。
  • 其他一切都需要完整的命名空间规范。