Interview Question
Country: United States
class base{ };
class derived : public base { };
int main()
{
base* b;
derived d;
b = dynamic_cast<base*>(&d);
return 0;
}
class base{ virtual void dummy() {} };
class derived : public base { };
int main()
{
base* pb ;
derived* pd; derived d;
pb = dynamic_cast<base*>(&d);
pd = dynamic_cast<derived*>(pb);
return 0;
}
base-to-derived conversions are not allowed with dynamic_cast unless the base class is polymorphic.
That's how dynamic_cast works in conversions from base to derived only if base is polymorphic, or else a compile time error occurs. So, to make base polymorphic, just define it like this:
Also, the whole example has numerous syntax errors. The correct example should look like this:
- Anonymous September 23, 2012