pointer operator->()
{
return ptr_+buffer_position_;
}
const_pointer operator->() const
{
return ptr_+buffer_position_;
}
所以const重载返回一个const指针(yay)但两个函数做同样的事情(boo)如何避免代码重复和随后的copypasta,同时仍保持const正确性?
(我特别关注C ++ 98 ......虽然C ++ 11的答案是教学法,因为我怀疑他们做了一些事情来解决这个问题。)
答案 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_;
}
};