Код в том виде, в котором он был опубликован, не должен завершаться сбоем, если у вас есть виртуальная функция в базовом классе (как указано в значке litb)
Но я считаю, что каждый текущий компилятор генерирует ошибку типа «Базовый класс не полиморфный», если у вас ее нет, так что, вероятно, это не будет проблемой.
Единственное, о чем я могу подумать, это то, что из-за какой-то странной ошибки все становится встроенным и не генерируется vtable. Но если вы поместите конструктор в файл C ++, компилятор решит не вставлять все подряд, запустив создание vtable, заставив работать ваш привод.
Но это очень дикая догадка, и я не думаю, что какой-либо компилятор мог бы допустить такую ошибку (?)
Если вы хотите получить определенный ответ, напишите больше кода. И используемый компилятор / платформа.
РЕДАКТИРОВАТЬ: Просмотр обновленного кода
Я думаю, что вы должны по крайней мере получить производное от базы;) (Полагаю, это опечатка)
Но, увидев код, я могу думать только о том, что gcc (неправильно) вставляет все и не генерирует vtable для Derived. Для чего это стоит, это прекрасно работает скомпилирован с GCC 4.0
3.1 уже исполнилось 7 лет ... если бы была возможность обновить, я бы пошел на это.