Это не законно. Вам нужно использовать итератор того же типа, что и вектор. Если вектор действительно содержит указатели на объекты CDerived, сделайте его vector<CDerived*>
. Если этого не произойдет, вам нужно попробовать уменьшить объекты в векторе, что, конечно, может не сработать. Вы можете посмотреть на dynamic_cast
в этом случае.