У меня есть несколько классов, подобных этому:
interface class IA
{
};
interface class IB
{
};
public ref class C : public IA, public IB
{
};
public ref class D
{
void DoSomething(IA^ aaa)
{
}
void Run()
{
C^ bob = gcnew C();
DoSomething(dynamic_cast<IA^>(bob)); // #1
DoSomething(bob); // #2
}
};
В данный момент я всегда пытаюсь использовать динамическое приведение при вызове такой функции (# 1 выше).
Однако это делает код довольно уродливым, поэтому я хочу знать, действительно ли это необходимо.
Используете ли вы dynamic_cast таким образом? Если да, то в чем главная причина?