Я наткнулся на эту библиотеку, Orocos BFL. Он использует внешние библиотеки матриц, а при их обертывании они используют множественное наследование; такие как
class Matrix: public Matrix_Wrapper, public Boost::Matrix
{
//some implementation
}
в отличие от композиции
Есть ли веская причина (производительность и т. Д.) Или это просто плохая часть кода?
Здесь есть причина для использования MI. Таким образом, Matrix
Этот класс можно использовать в алгоритмах, специфичных для orocos bfl, но он также может использоваться в алгоритмах, которые ожидают матрицы библиотеки, которые orocos bfl использует для своей реализации.
Библиотека orocos может использовать разные библиотеки для обеспечения базовой реализации матрицы, поэтому алгоритмы, предоставляемые orocos, нельзя привязать к одному конкретному интерфейсу матрицы.
В то же время пользователям библиотеки orocos, скорее всего, потребуются дополнительные алгоритмы для работы с матрицами, которые они используют с библиотеками orocos.
Используя множественное наследование, библиотека orocos может рассматриваться как расширение одной из нескольких базовых матричных библиотек.
Других решений пока нет …