您好,我的代码中有以下结构:

namespace ns
{
class A
{
  public:
    class Impl
    {
        public: static int x;
    };
    class B
    {
      public:
        class Impl
        {
          public:
            Impl(){printf("%d", ns::A::Impl::x);}
        };
    };
};
}

有没有办法使用相对路径而不是绝对路径来访问该 x 属性?

这会更方便,因为有一天我可以将命名空间名称从 ns 更改为例如other ,或者将整个文件放入某个外部命名空间中。

最佳答案

没有等效的“..”,即一种指定“封闭命名空间/类”的方法,但您可以手动实现类似的东西:

class B
{
    typedef A parent;          // <---- add this

// ...

    printf("%d", parent::Impl::x);

在这种特殊情况下,它什么也得不到:这只是一种更迂回的方式,如 Maxim 所建议的那样使用 A::Impl::x。但总的来说,如果你有一个更复杂的层次结构,那么这种形式可能会给你一些可读性。

关于c++ - c++ 命名空间是否有 ".."的类似物?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23801909/

10-12 17:29