Возможно ли динамическое преобразование из одного базового класса в другой?

Например, у меня есть такой код

class Base1
{
  virtual void wonderFULL() = 0;
};

class Base2
{
  // all this weird members
};

class Derived : public Base1, public Base2
{
  // not so weird members
};

int main()
{
  Derived Wonder;
  magicFunction(&Wonder);
  return 0;
}

void magicFunction(Base2 *ptr)
{
  if (Base1 *b1 = dynamic_cast<Base1 *>(ptr))
    b1->wonderFULL();
}

Однако wonderFULL никогда не выполняется из-за невозможности привести ptr к b1. Возможно ли вообще выполнить такое преобразование?

5
задан PHeiberg 28 September 2010 в 13:52
поделиться