тут хитрая вещь может получится. если в иерархии появляется еще один класс C унаследованный от A, то может оказаться так, что мы пытаемся присвоить объекту типа C значение объекта типа B. причем B про С вроде как и не знает. с виртуальными операторами тут лучше не связываться. Решение в лоб: в точке присваивания, раз вы точно знаете типы, скастить ссылку к нужным типам их и вопспользоваться родным оператором:
C++ |
1
| static_cast<B&>(*b1)=static_cast<B&>(*b2); |
|
ну или dynamic_cast если нужна проверка и есть RTTI