Вы не можете и не должны ...
Это предназначено, чтобы защитить вас от вас:)
Любое ускорение неуправляемо может быть сделано только в Тойотах (но не в другихмоделей автомобилей), а затем определение в порядке, и вы должны сначала проверить, действительно ли автомобиль является Toyota, или все автомобиль может "ускоряться неуправляемо", а затем объявление должно быть в классе автомобилей.
Вы можете,конечно, сделайте бросок ... но спросите себя ... если вы знаете подтип, который вы получаете ... почему вы получаете автомобиль, а не Toyota ??
Править: Я до сих пор не понимаю, почему вы не можете отредактировать его, чтобы оно выглядело так:
interface IToyotaAccelerable
{
void accelerateUncontrollably();
}
class Toyota : public Car : IToyotaAccelerable
{
void accelerateUncontrollably();
}
class ToyotaDriver : public Person
{
void drive(Car car)
{
// Do whatever logic you want with the car...
// How to accelerateUncontrollably without dynamic cast?
IToyotaAccelerable accel = car as IToyotaAccelerable
if (car != null)
{
accel.accelerateUncontrollably();
}
}
}
Теперь вы программируете с поведенческим свойством, что-то, что данный объект может или не может сделать ..так что вам не нужно приводить, и функция по крайней мере имеет смысл с семантической точки зрения ...