如何制作变量名称别名

时间:2015-08-25 17:40:44

标签: c++

我编写了一些将迭代器作为参数的算法。我想要这些迭代器的名称向用户反映它们表示范围的事实,所以我将它们命名为:

template < typename T >
void foo( T begin_i, T end_i ) {
    // ...
}

我也希望在我的代码中使用这些参数,但在实现名称begin_iend_i的上下文中,不能反映它们的用途,因此我需要为它们命名别名。这是什么参考,对吧?

template < typename T >
void foo( T begin_i, T end_i ) {
    T& context_dependent_name1 = begin_i;
    T& context_dependent_name2 = end_i;
    // Code using aliases    
}

这适用于我,但隐藏初始名称begin_iend_i会很不错。 我的问题是:

  1. 这是正确使用参考文献吗?是否有任何缺点(除了范围内的几个未使用的名称)?
  2. 有没有更好的方法来实现这个目标?
  3. 有没有办法隐藏初始名称?

1 个答案:

答案 0 :(得分:4)

另一种方法是在声明中使用一个名称,在定义中使用另一个名称:

template <typename T> void foo(T begin_i, T end_i);

稍后或以.inl为例

template<typename T>
void foo(T context_dependent_name1, T context_dependent_name2) {
    // Implementation
}

虽然可能会为参数名称不匹配的某些文档工具发出警告。