这个问题是关于在.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”在此上下文中是私有的。
这似乎奏效:
auto outer::inner::manipulate_foos(footype f1, footype f2) -> footype { ... }