この記事は「Nim Advent Calendar 2021」の16日目の記事として登録させてもらっています。 C++のdynamic_cast C++にはdynamic_castというキャストがあり、これを使うと安全にダウンキャスト*1を行うことができます。 ここでいう「安全」とは、ダウンキャストの失敗を判断できるということです。 #include <stdio.h> class Base { public: virtual ~Base(){} }; class Derived : public Base {}; int main() { Derived* derived = new Derived; Base* base1 = derived; Base* base2 = new Base; printf( "dynamic_cast<Base*>(base1) = %p\n", dy