constクラスとnon-constクラスのメソッドについてこの質問を検討しています。推奨される回答は、ScottMeyersによるEffectiveC ++から取得されます。ここでは、constメソッドの観点からnon-constメソッドが実装されています。
これをさらに拡張すると、メソッドが参照ではなくイテレータを返す場合、コードの重複をどのように減らすことができますか?リンクされた質問の例を変更する:
class X
{
std::vector<Z> vecZ;
public:
std::vector<Z>::iterator Z(size_t index)
{
// ...
}
std::vector<Z>::const_iterator Z(size_t index) const
{
// ...
}
};
distance()/ Advance()手法を使用せずに、const_iteratorからイテレータに直接変換することはできないため、constメソッドの観点からnon-constメソッドを実装することはできません。
この例では、コンテナーとしてstd :: vectorを使用しているため、ポインターとして実装されている可能性があるため、実際にはconst_iteratorからイテレーターにキャストできる可能性があります。私はこれに頼りたくありません。より一般的な解決策はありますか?