Я просмотрел несколько статей, которые кажутся похожими на мои проблемы, с которыми я сталкиваюсь в своей домашней работе для введения в C ++, но все еще не могу найти решение.
Я пытаюсьперегрузить оператора + для увеличения пассажировместимости на межд.Кроме того, перегружая оператора ++ для увеличения пассажировместимости на 1.
Обратите внимание, что в моем классе происходит полиморфизм, у меня есть Ship (base), CruiseShip (производный).
Конструктор CruiseShip:
CruiseShip::CruiseShip(string name, string year, int passengers) : Ship(name, year)
{
maxPassengers = passengers;
}
Перегрузки оператора:
CruiseShip& CruiseShip::operator+(int n) const
{
maxPassengers += n;
return *this;
}
CruiseShip& CruiseShip::operator++() // prefix
{
++maxPassengers;
return *this;
}
CruiseShip CruiseShip::operator++(int) // postfix
{
CruiseShip temp(*this);
operator++();
return temp;
}
Main:
int main()
{
//Create objects, pointers
Ship *ships[3] = {new Ship("Titania", "2020"), new CruiseShip("Lusia", "2029", 200), new CargoShip("Luvinia", "2025", 500)};
//Print out ships
for(Ship *s : ships)
{
s -> print();
cout << endl;
}
//Reset a ships passenger, capacity
//I've tried testing each individually and all 3 still end up with segmentation errors
ships[1] = ships[1] + 5; //segmentation error related to this
ships[1]++; // segmentation error related to this
++ships[1]; // segmentation error related to this
//Print out ships
for(Ship *s : ships)
{
s -> print();
cout << endl;
}
//deallocate
return 0;
}