実装が内部に持つコンテナのイテレータを返すメンバ関数をインタフェースに持ちたい場合,
どうすればよいでしょうか?

// インタフェース
struct Hoge {
 virtual HogeIterator begin(void);
};

// 実装
struct HogeImpl : Hoge {
 HogeIterator begin(void) { container_.begin(); }
 vector<int> container_;
};

インタフェースで typedef vector<int>::iterator HogeIterator; とすると実装が見えてしまうし,
インタフェース側で struct HogeIterator; と宣言だけしておいて実装部分で
struct HogeIterator : public vector<int>::iterator {
・・・
};
とするのは大変そうな気がするのですが。