Вы не можете хранить ссылки в std::list
, и ваш список не содержит экземпляров подкласса TYPE
.
Если вы присваиваете экземпляр подкласса TYPE
для TYPE
, он «разрезается», что означает, что вся информация о подклассе теряется.Вот почему вызывается метод TYPE
- объект имеет значение a TYPE
, а не подкласс TYPE
.
Если вам нужен полиморфизм, вы должны хранить указатели - TYPE*
или умный указатель - в списке.