Смотрите, есть массив указателей базового типа. Туда можно присвоить и указатель, который наследуется от базового. Можно присваивать содержимое записи, указатель на которую хранится в третьей (индекс 2) ячейке массива, записи, указатель на которую хранится в первой (индекс 0) ячейке массива, так как они одного типа. Но нельзя присваивать содержимое записи, указатель на которую хранится во второй (индекс 1) ячейке массива, записи, указатель на которую хранится в первой (индекс 0) ячейке массива, так как они разных типов, хотя оба они и наследуются от одного базового типа. Если попытаться сделать такое присваивание, то произойдет run-time ошибка.

Как до присваивания, можно проверить, одного они типа или нет, если одного, то присваивать, а если не одного, то не присваивать?