【问题标题】:How to shorten nested namespaces in a return type which is private to an inner class?如何缩短内部类私有的返回类型中的嵌套命名空间?
【发布时间】:2020-10-17 22:03:15
【问题描述】:

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

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

类外{
    类内部{
        typedef map> footype;
    私人的:
        footype 操纵_foos(footype f1,footype f2);
    }
}

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

outer::inner::footype external::inner::manipulate_foos(footype f1, footypte f2) {
    // 身体
}

在我的情况下,这需要将返回类型和方法名称拆分为多行,而且难以阅读。

问题

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


注意事项

  • 为了清楚起见,我不想在方法名称中省略命名空间;我理解这些的价值,我觉得它们不会妨碍可读性,而返回类型中的命名空间会损害可读性。由于这是一个私有方法,我认为说明完整的返回类型没有帮助。

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

    using footype = outer::inner::footype
    

    但它给了我错误'class outer::inner::footype' is private within this context.

【问题讨论】:

  • 我没有在 SO 上发布很多问题(尽管我在其他 SE 上很活跃),因此非常感谢您在如何改进问题方面提供任何帮助。如能评论,不胜感激!!另外,我找不到重复的,但如果我错过了,请告诉我。

标签: c++ namespaces private-members


【解决方案1】:

这似乎有效:

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

【讨论】:

  • 不错的解决方案!它确实有效,这可能是尾随返回类型的一个引人注目的用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2019-04-23
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多