Użyj polimorfizmu, aby za pomocą wskaźnika na klasę bazową reprezentować dowolny typ samochodu
Pytania
Jak trzymać silniki? Przez wartość, referencję, czy wskaźnik?
Czy jest problem diamentowy?
Czy są wycieki pamięci?
Czy kod jest testowalny?
Praca domowa
(5 XP) Utwórz wyjątek InvalidGear. Ma on być rzucany wtedy, gdy ktoś próbuje w niewłaściwy sposób zmienić bieg, np. z 5 na R. Ma on dziedziczyć po std::logic_error.
(10 XP) Napisz testy jednostkowe do tego kodu. W szczególności przetestuj rzucanie powyższego wyjątku. Skonfiguruj odpowiednio CMake'a.
(0 XP) Napraw interfejs, aby był łatwy w poprawnym użyciu i trudny do niewłaściwego użycia (np. accelerate(-999)). Bez punktów, bo ciężko zautomatyzować tak ogólne zadanie i każdy wymyśli tutaj coś innego.