迭代器是在此类似,使一个有趣的研究。
常量迭代器通常是“非常量”迭代器的基础,并且您经常会发现const_cast<>()
或C风格强制转换用于从子类中的带有访问器的基类中丢弃常量。
编辑: 评论是
我有一个拉链迭代器,其中常量一个从非const
继承这通常会是错的传承结构(如果你说什么我认为你是),原因是孩子不应该比父母限制少。
说你有一些算法把你的拉链迭代器,一个const迭代器传递给非const的会是合适的呢?
,如果你有一个const容器,只能请它替一个const迭代器,但随后的常量迭代从迭代器派生,所以你只需要使用父特征有非const的访问。
这是建议的传承继传统的STL模型
class ConstIterator:
public std::_Bidit< myType, int, const myType *, const mType & >
{
reference operator*() const { return m_p; }
}
class Iterator : public ConstIterator
{
typedef ConstIterator _Mybase;
// overide the types provided by ConstIterator
typedef myType * pointer;
typedef myType & reference;
reference operator*() const
{
return ((reference)**(_Mybase *)this);
}
}
typedef std::reverse_iterator<ConstIterator> ConstReverseIterator;
typedef std::reverse_iterator<Iterator> ReverseIterator;
你不是第一个:http://stackoverflow.com/questions/856542/elegant-solution-to-duplicate-const-and-non-const-getters – 2010-10-28 21:13:27
谢谢直到,没有出现我的搜索 – Steve 2010-10-28 21:26:48