首页 > 解决方案 > 函数参数和函数体的本地可见 typedef

问题描述

我想知道是否有任何方法可以typedef在本地使用函数参数和函数体。

就像在以下情况下:

// typedef: solution 1, visible everywhere in the namespace

void func(/*really long type*/ param1, /*many more params of same/different type*/) {

    // typedef: solution 2, cannot use for params

    /*more variables using the same typedef inside the body */

}

我知道我可以拥有typedef函数体内部,但这不适用于参数。我想让它更具可读性,尤其是考虑到长类型名称和同一类型的多个参数。 typedef函数之外会污染命名空间,除非没有其他选择,否则我想防止这种情况发生。

有没有一种我不知道的方法可以在更本地化的同时实现上述目标?如果不是,建议使用哪种解决方案。

标签: c++

解决方案


您可以执行以下操作:

namespace inner {

  using type = really_long_type;  // typedef works as well

  void func(type t, /* ... */) {
    // ...
  }
}

using inner::func;

推荐阅读