Я просто наткнулся на следующую ошибку (и нашел решение в сети, но его нет в переполнении стека):
(.gnu.linkonce. [stuff]): неопределенная ссылка на [метод] [объектный файл] :(. gnu.linkonce. [stuff]): неопределенная ссылка на `typeinfo для [classname] '
Почему можно получить одну из этих ошибок компоновщика «неопределенная ссылка на typeinfo»?
(Бонусные баллы, если вы можете объяснить, что происходит за кулисами.)
virtual void abc() =0;
( как если бы базовая версия никогда не называлась)
abc()
таким образом, вы можете легко забыть переопределить abc()
в производном классе и подумать, что все в порядке, так как вы все равно можете вызывать функцию без проблем. Хорошая практика для реализации чисто виртуальных функций найдена в этой статье , и она состоит в том, чтобы заставить функцию печатать «Вызов чисто виртуальной функции», а затем завершить работу программы.
= 0;
.