Проблема в том, что дерево наследования испорчено. Если вы собираетесь использовать множественное виртуальное наследование от I
в C
, то и A
, и B
должны его виртуально наследовать, в противном случае C
приведет к двум I
подобъектам, вызывающим проблемы преобразования:
class A : public virtual I {
};
class B : public virtual I {
};