Как создать подкласс шаблонного базового класса?
У меня есть следующие данные структуры данных:
struct fastEngine { ... }
struct slowEngine { ... }
template<typename T>
class Car {
T engine;
vector<T> backupEngines;
virtual void drive() = 0;
}
class FastCar : public Car<fastEngine> {
virtual void drive() {
// use the values of "engine" in some way
}
}
class SlowCar : public Car<slowEngine> {
virtual void drive() {
// use the values of "engine" in some way
}
}
Car* getCarFromCarFactory() { // 1
if (randomNumber == 0)
return new FastCar();
else
return new SlowCar();
}
void main() {
Car* myCar = getCarFromCarFactory(); // 2
myCar->drive();
}
Компилятор жалуется в местах 1 и 2, потому что он требует, чтобы я определилАвтомобиль* с параметрами шаблона. Мне все равно, какая шаблонная версияАвтомобиль Я использую, я просто хочу указатель наАвтомобиль что я могу водить.двигатель структуры должны быть структурами, потому что они взяты из существующего кода, и я не могу их контролировать.