При LoadLibrary все импортируется благополучно, кроме виртуальных функций. Но если я буду экспортировать не вектор структур с указателем на экземпляр как поле, а вектор указателей на экземпляр, то вызов виртуальной функции происходит верно.
…соответственно в коде нажатия кнопок устанавливаем эту shapeToDraw,
а paintEvent реагирует на неё.
setChecked(false) в обработчике paintEvent состояние кнопок должно однозначно соответствовать предложенному shapeToDraw, поэтому можно не вводить дополнительные сущности, а просто смотреть на состояние кнопок. Большинство человеческих текстов достаточно однородны, при принципе utf мы будем достаточно редко переключать регистр, на печать каждого символа будет уходить в среднем чуть больше одного нажатия клавиши. Если мы будем печатать тот же однородный текст принципом unicode, то будем каждый раз нажимать 9 клавиш.
Адреса функции известны ещё на этапе компиляции
Зачем здесь inline?