【问题标题】: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
                  {};
              }
          };
          

          【讨论】:

            猜你喜欢
            • 2010-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-29
            • 2016-03-05
            • 2012-08-06
            • 1970-01-01
            相关资源
            最近更新 更多