Я пытаюсь реализовать довольно большой объект, который реализует множество интерфейсов.Некоторые из этих интерфейсов являются чисто виртуальными.У меня могут быть проблемы с наследованием бриллиантов.Visual Studio сообщает о предупреждении C4250 ('class1' : inherits 'class2::member' via dominance)
.Прежде всего эти классы наследуются практически так, как и должно быть.Ниже приведен частичный дизайн класса, который вызывает эту проблему.
A B C
\ / \ /
\ / \ /
AB BC
| |
| BC2
| |
\ D: Implementation of B, C, BC, BC2
\ /
Big
Во всем этом дереве только D реализует виртуальные методы, другого определения этого метода нет.И все виртуальные методы B перечислены в предупреждениях.Если важно, D - полный класс.
Я читал, что это происходит с сериализацией Boost, и это предупреждение можно игнорировать.
Является ли этот метод, который я пытаюсь достичь, действительным?Безопасно ли игнорировать это предупреждение?
Примечание 1: Это не дубликат Предупреждение компилятора Visual Studio C4250 ('class1': наследует class2 :: member 'черездоминирование) , я попробовал предложенное там решение.
Примечание 2: Я также могу отправить диаграмму классов, но она немного сложнее, чем эта.
РЕДАКТИРОВАТЬ: Полное предупреждение выглядит следующим образом:
warning C4250: 'gge::resource::ImageResource' : inherits
'gge::graphics::ImageTexture::gge::graphics::ImageTexture::drawin'
via dominance
gge::resource::ImageResource
является большой на чертеже, gge::graphics::ImageTexture
это D, drawin является одним из шести методов, для которых я получаю предупреждение.