У вас есть два варианта: либо добавить метод виртуального привода () в определение вашего автомобиля, либо привести указатели автомобилей к указателям Ford. Скорее всего, вы захотите сделать первый.
class Car
{
public:
Car();
virtual void drive() { // default implementation}
};
Теперь вы можете управлять () вашим автомобилем! Вы также можете сделать drive () чисто виртуальной функцией, например:
class Car
{
public:
Car();
virtual void drive() = 0;
};
Это в основном означает, что для drive () реализации по умолчанию нет: она ДОЛЖНА быть переопределена в подклассе. Второй способ, который я упомянул, который, опять же, вы, вероятно, не хотите, но должен быть включен для полноты, это приведение указателя:
static_cast<Ford*>(cars.back())->drive();
Это работает только в том случае, если вы заранее знаете, что Автомобиль - это Форд, и в этом сценарии его мало используют. Вы также можете посмотреть в dynamic_cast.