ここで、2番目のキャストは次のエラーを出します
cast.cc:35:35: error: cannot dynamic_cast ‘base’ (of type ‘class CBase*’) to type ‘class CDerived*’ (source type is not polymorphic)
CBase * base = new CDerived;
CBase* pb;
CDerived * der = new CDerived;
CDerived* pd;
pb = dynamic_cast<CBase*>(der); // ok: derived-to-base
pd = dynamic_cast<CDerived*>(base); // wrong: base-to-derived
これはどういう意味ですか??
そして、基本クラスをポリモーフィックにすると、なぜこれが機能するのでしょうか?
この背後にある基本的な概念を教えてください。