Здравствуйте, Leshi, Вы писали:
L>Не пойдет. Преобразовать из A* в B* неизвестно как. Я думаю, что правильнее всего будет завести промежуточный тип:
L>Вот тогда можно будет dynamic_cast использовать.
Почему не пойдет — у меня в контейнере гарантировано будут храниться C1 или C2. А dynamic_cast может использоваться для cross cast-инга. В MSDN-е:
A A
| |
B C D
| _ | _ |
|
E
The dynamic_cast operator can also be used to perform a “cross cast.” Using the same class hierarchy, it is possible to cast a pointer, for example, from the B subobject to the D subobject, as long as the complete object is of type E.
Я сам до этого старался обходить множественное наследование — а здесь не получилось, вот и напоролся