Ваша проблема:
void displayCar(Car &car) {
cout << car.getModel() << ", " << car.getYear() << endl;
}
Вы должны использовать константную ссылку:
void displayCar( const Car & car ) {
cout << car.getModel() << ", " << car.getYear() << endl;
}
Эта функция:
Car getCar(string model, int year) {
Car c(model, year);
return c;
}
в порядке, но все, что он делает, это то, что делает конструктор, так что это избыточно. Передача значения назад, а не ссылки, является правильным решением для этого типа функции, однако параметр модели должен передаваться по константной ссылке:
Car getCar( const string & model, int year) {
Как правило, для типов классов, таких как string или Car, вашим параметром по умолчанию всегда должна быть константная ссылка.