Не.
Читайте о полиморфизме. Почти каждая ситуация «динамического приведения» является примером того, как полиморфизм пытается реализовать.
Какое бы решение вы ни приняли в динамическом броске, оно уже было принято. Просто делегируйте реальную работу подклассам.
Вы пропустили самую важную часть вашего примера. Полезная, полиморфная работа.
string typename = typeid(*object).name();
if(typename == "Derived1") {
Derived1 *d1 = static_cast< Derived1*>(object);
d1->doSomethingUseful();
}
else if(typename == "Derived2") {
Derived2 *d2 = static_cast < Derived2*>(object);
d2->doSomethingUseful();
}
...
else {
...
}
Если каждый подкласс реализует doSomethingUseful, все это намного проще. И полиморфный.
object->doSomethingUseful();