Я пытаюсь реализовать довольно большой объект, реализующий множество интерфейсов. Некоторые из этих интерфейсов являются чисто виртуальными. У меня может возникнуть проблема в наследовании алмазов. 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': inherits 'class2:: member' через доминирование), я пробовал предлагаемое там решение.
Примечание 2: Я также могу отправить диаграмму классов, но это немного сложнее, чем это.
EDIT: Полное предупреждение:
warning C4250: 'gge::resource::ImageResource' : inherits
'gge::graphics::ImageTexture::gge::graphics::ImageTexture::drawin'
via dominance
gge::resource::ImageResource
Большой в чертеже, gge::graphics::ImageTexture
есть D, drawin - один из шести методов, о которых я предупреждаю.