如何避免const版本的函数的代码重复

时间:2014-05-22 14:29:34

标签: c++ const

  pointer operator->()
  {
    return ptr_+buffer_position_;
  }

  const_pointer operator->() const
  {
    return ptr_+buffer_position_;
  }

所以const重载返回一个const指针(yay)但两个函数做同样的事情(boo)如何避免代码重复和随后的copypasta,同时仍保持const正确性?

(我特别关注C ++ 98 ......虽然C ++ 11的答案是教学法,因为我怀疑他们做了一些事情来解决这个问题。)

1 个答案:

答案 0 :(得分:0)

如果您不使用c ++ 11:

你可以试试这个:

class T {
      pointer operator->()
      {
        return const_cast<pointer> (static_cast<const T*>(this)->operator->());
      }

      const_pointer operator->() const
      {
        return ptr_+buffer_position_;
      }
};