提问者:小点点

如何缩短内部类私有的返回类型中的嵌套命名空间?


这个问题是关于在.cpp文件中处理方法返回类型中的长嵌套私有类命名空间。 以前有关于在cpp文件中避免长名称和嵌套名称空间的问题,但它们似乎没有涵盖我的用例。

我在标题.h文件中有一个私有嵌套类,它具有特定于该类的私有类型,如下所示:

class outer {
    class inner {
        typedef map<int, map<int, int>> footype;
    private:
        footype manipulate_foos(footype f1, footype f2);
    }
}

.cpp文件中定义方法时,如果我没有使用返回类型的名称空间的完整路径,即使名称空间是在参数类型中推断出来的,编译器也会抱怨。 所以我必须写一些东西

outer::inner::footype outer::inner::manipulate_foos(footype f1, footypte f2) {
    // body
}

在我的例子中,这需要将返回类型和方法名拆分到多行,而且非常难读。

当返回类型是内部类的私有类型时,有什么方法可以省略该类型中的名称空间吗?

>

  • 明确地说,我不想省略方法名中的名称空间; 我理解这些的价值,我觉得它们并不妨碍可读性,而返回类型中的名称空间正在损害可读性。 由于这是一个私有方法,我认为拼出完整的返回类型并没有什么帮助。

    到目前为止,我在.cpp文件中尝试了以下解决方案:

    using footype = outer::inner::footype
    

    但它会给我一个错误“Class Outer::Inner::FooType”在此上下文中是私有的。


  • 共1个答案

    匿名用户

    这似乎奏效:

    auto outer::inner::manipulate_foos(footype f1, footype f2) -> footype { ... }