Мы имеют большую базу кода на C ++, и после небольшого рефакторинга (добавлен один класс и переписаны некоторые связанные методы) мы начали получать ошибки компоновщика в GCC 3 и 4. Ошибки компоновщика были, в частности, «отсутствующими ссылками на не виртуальные преобразователи» в небольших примеры программ, которые делят классы на подклассы в нашем большом SDK.
Поиск в Интернете не
to
class Foo: public B, public A {}
в классах, в которых отсутствуют преобразователи, «устраняет» проблему.
Виртуальное наследование появляется только в одном, очень часто используемом базовом классе для подсчет ссылок. Я убедился, что каждое использование этого класса действительно является виртуальным публичным, а не только случайным публичным наследованием.
Очевидно, что возня с порядком наследования на самом деле не решает проблему. Что еще это могло быть?