Когда я запускаю этот код, он выходит из строя с любыми ошибками. Я пробовал все, что знал и выполнял поиски, но я могу понять это. Он строит и работает отлично и проходит весь путь до cout в FleetCapacity, и что-то в этой строке приводит к сбою кода. Когда я прокомментировал эту строку, код работал нормально, поэтому я не уверен, почему эта строка кода вызывает сбой и сжигание моей программы.Передача указателя на массив объектов в функцию
#include <iostream>
#include <string>
using namespace std;
class Ship{
private:
string shipName;
string shipYear;
public:
Ship(string sN,string sY){shipName=sN; shipYear=sY;}
virtual void printInfo();
void setShipName(string);
virtual string getShipName();
void setShipYear(string);
string getShipYear();
};
class CruiseShip:public Ship{
private:
int maxPass;
int maxCrew;
public:
CruiseShip(string sN,string sY, int mP,int mC):Ship(sN,sY){setShipName(sN);maxPass=mP; maxCrew=mC; }
void printInfo();
void setMaxPass(int);
int getMaxPass();
void setMaxCrew(int);
int getMaxCrew();
};
class CargoShip:public Ship{
private:
int cargoCap;
public:
CargoShip(string sN,string sY,int cC):Ship(sN,sY){setShipName(sN);cargoCap=cC;}
void printInfo();
void setCargoCap(int);
int getCargoCap();
};
void Ship::setShipName(string sN){shipName=sN;}
string Ship::getShipName(){return shipName;}
void Ship::setShipYear(string sN){shipYear=sN;}
string Ship::getShipYear(){return shipYear;}
void Ship::printInfo(){
cout<<"The ships name is "<<shipName<<endl;
cout<<"The ships year is "<<shipYear<<endl;
}
void CruiseShip::printInfo(){
cout<<"The ships name is "<<getShipName()<<endl;
cout<<"The ships maximum passangers is "<<maxPass<<endl;
}
void CruiseShip::setMaxPass(int mP){maxPass=mP;}
int CruiseShip::getMaxPass(){return maxPass;}
void CruiseShip::setMaxCrew(int mC){maxCrew=mC;}
int CruiseShip::getMaxCrew(){return maxCrew;}
void CargoShip::printInfo(){
cout<<"The ships name is "<<getShipName()<<endl;
cout<<"The ships cargo capacity is "<<cargoCap<<endl;
}
int CargoShip::getCargoCap(){return cargoCap;}
void CargoShip::setCargoCap(int cC){cargoCap=cC;}
void fleetCapacity(Ship** s ,int e){
cout << "Name of ship: " << s[e]->getShipName() << endl;
}
int main()
{
const int NUMSHIPS = 3;
//int aSize = NUMSHIPS;
// array of ship pointers initialized with addresses of dynamically allocated class objects.
Ship *ships[NUMSHIPS] = {
new Ship("The Dinghy Berry", "1982"),
new CruiseShip("Disney Adventure Tours"," ",500,100),
new CargoShip("The Sea Trucker"," ", 50)
};
for (int i = 0; i < NUMSHIPS; i++)
{
ships[i]->printInfo();
}
cout << "The entire fleet capacity is: ";
fleetCapacity(ships, NUMSHIPS);
cout << " tons." << endl;
return 0;
}
Что отделяет отладчик? Программы, как правило, не разбиваются бесшумно, если вы специально не сделали что-то. – Sirens