Я щойно зіткнувся з наступною помилкою (і знайшов рішення в Інтернеті, але його немає в переповненні стека):
(.gnu.linkonce. [stuff]): невизначене посилання на [метод] [файл файлу] :(. gnu.linkonce. [речі]): невизначене посилання на `typeinfo для [classname] '
Чому можна отримати одну з цих помилок у зв’язці "неозначеної посилання на typeinfo"?
(Бонусні бали, якщо ви можете пояснити, що відбувається за лаштунками.)
virtual void abc() =0;
(якщо базову версію ніколи не називати)
abc()
так, ви можете легко забути переосмислити abc()
у похідному класі і подумати, що все в порядку, оскільки ви все одно можете без проблем викликати функцію. У цій статті ви знайдете належну практику реалізації чистих віртуальних функцій , і це полягає в тому, щоб функція надрукувала "Чиста віртуальна функція називається", а потім вийшла з ладу програма.
= 0;
.