Вы неправильно набрали имя метода жизненного цикла.
Вы, вероятно, хотите использовать ionViewWillEnter
или ngOnInit
Код, как отправлено, не должен перестать работать, если у Вас есть виртуальная функция в базовом классе (как litb указанный).
Но я полагаю, что каждый текущий компилятор генерирует "Базовый класс, не полиморфный" вид ошибки, если Вы не имели, так, чтобы, вероятно, не была проблема.
Единственная вещь, о которой я могу думать, состоит в том, что из-за некоторой странной ошибки все встраивается, и не vtable сгенерирован. Но если Вы помещаете конструктора в файл C++, компилятор решает не встроить все, инициировав создание vtable, заставляя Ваш бросок работать.
Но это - очень дикие догадки, и я не думаю, что какой-либо компилятор имел бы такую ошибку в нем (?)
Если Вы хотите определенный ответ, отправляете больше кода. И компилятор / платформа используется.
Править: Наблюдение обновленного кода
Я думаю, что необходимо, по крайней мере, произойти Полученный из Основы ;) (я предполагаю, что это - опечатка),
Но после наблюдения кода, единственная вещь, о которой я могу думать, состоит в том, что gcc (неправильно) встраивает все и не генерирует vtable для Полученного. Если это имеет значение это хорошо работает скомпилированное с gcc 4.0
3.1 более чем 7 лет к настоящему времени..., если бы существует возможность обновить, я пошел бы для нее.
Сделайте деструктор виртуальным, и поместите его (или по крайней мере один виртуальный метод) в .cpp файле.
Некоторые компиляторы (чтение: gcc), ищут сначала встреченное невстроенное виртуальное тело метода и используют его для решения, куда поместить таблицу виртуальных методов. Если у Вас нет виртуальных методов с телами в .cpp файле, таблица виртуальных методов не создается.
У Вас должен быть по крайней мере один виртуальный метод для dynamic_cast для работы. Динамический состав исполнителей использует таблицу для выяснения информации о типе, и никакая таблица не составлена, при отсутствии виртуальных методов.
Если у Вас будет класс, что Вы ожидаете быть разделенными на подклассы, и он имеет деструктор или если класс будет иметь какие-либо переменные экземпляра, которые являются классами с деструкторами, то Вы действительно захотите сделать свой деструктор виртуальным (даже если он будет иметь пустое тело). Иначе очистки, которую Вы ожидаете, не произойдет для экземпляров подкласса.
У Вас есть какая-либо виртуальная функция в Основе? Это не будет работать иначе. Если ничто иное, сделайте его dtor виртуальное.
Не знайте, спросил ли это уже другой парень, который удалил его ответ, но я полагаю, что это было что-то другое: Вы делаете dynamic_cast от конструктора оснований? Если так, это не будет работать. Компилятор будет думать, что Основой является большая часть производного типа, подобного тому, когда Вы вызываете виртуальную функцию, и это заканчивает тем, что назвало версию Основы.
В рассмотрении Вашего кода я не вижу наследования. Вы забывали делать это? Полученный ни из чего не получен.
Вы делаете это в Visual C++? Я думаю, что Вы используете, чтобы должными быть позволить информации о типах во время выполнения (RTTI) в параметре компилятора для этого работать.
Не горите меня, если у меня есть эта несправедливость. Это было некоторое время, так как я использовал C++!!!
В коде Вы отправили Полученный, не получен из Основы.
Править: К вашему сведению измененный код хорошо работает с g ++ 3.4.5