Я нахожусь во введении в класс C ++ и пытаюсь выяснить, почему я получаю ошибку "Нет подходящей функции для вызова".И я просмотрел другие посты, но в основном это проблемы с самими конструкторами.
Это упрощенные фрагменты:
В Базовом классе - Корабль
// Members: shipName, shipBuiltYear
Ship::Ship(){ //implementation }
Ship::Ship(string name, string year){ //implementation }
void Ship::set(string name, string year){ //implementation }
В производном классе - PirateShip
// Members: numPirates
PirateShip::PirateShip() : Ship() { //implementation }
PirateShip::PirateShip(string name, string year, string pirates) : ship(name, year){ //implementation }
void PirateShip::set(int pirates){ //implementation }
В основном
Ship *ships[2] = {new Ship(), new PirateShip()};
ships[0] -> set("Luvinia", "2020"); // using setter from base class
ships[1] -> set("Skylin", "2030"); // using setter from base class
ships[1] -> set(100); // using setter from derived class
Проблема в том, что вы не можете использовать базовый класс для установки PirateShip, затем используйте PirateShip для установкиэто снова?
Должен ли я изменить:
void PirateShip::set(int pirates){ //implementation }
на:
void PirateShip::set(string name, string year, string pirates)
{
Ship::set(name, year);
numPirates = pirates;
}
?
Или есть другой способ сделать это