Это может быть хорошей идеей иметь суперкласс, которым они делятся, но это зависит от того, как именно эти два типа определены, или, возможно, даже один из них наследует от другого, так как кажется, что это два представления по тем же данным. Это также решило бы ваши проблемы с итератором.
Или вы могли бы написать контейнер, который внутренне использует один из них для доступа к данным и имеет гладкое представление для внешнего мира. Я имею в виду «Композиция на наследство».
Но, по сути, все сводится к тому: вы очень серьезно задумывались о структуре своего класса? Вы уверены, что это так хорошо, как может быть?