return Object::Equals(obj);
Это не может быть скомпилировано, потому что это неоднозначно: есть два Object
базовых объекта.
Кроме того, преобразование из Line*
в Object*
является неоднозначным, и неоднозначность не может быть разрешена для второго Object
базового класса (в порядке слева направо для базового класса), поэтому вторая Object
база не служить любой цели, кроме как создавать трудности.
Непонятно, что именно вы пытаетесь сделать: что представляет класс ComplicatedOne
? Почему вы наследуете его, если собираетесь снова переопределить каждую Object
виртуальную функцию?