Я пытаюсь написать код для моего класса C++. Я использую eclipse. Я с трудом пытаюсь понять некоторые из инструкций в этой проблеме.Массив указателей в C++
Я создал базовый класс под названием «Корабль», а затем использовал наследование для моего класса CruiseShip и класса CargoShip.
Для класса Cruiseship, я поручил создать
Функция печати, переопределяет функцию печати в базовом классе. Функция печати CruiseShip должна отображать только имя судна и максимальное количество пассажиров .
И аналогично для грузового класса
Функция печати, переопределяет функцию печати в базовом классе. Функция печати CargoShip должна отображать только название судна и грузоподъемность судна.
Я не уверен, что означает «переопределить» функцию печати в базовом классе.
Он также инструктирует меня
Продемонстрировать классов в программе, которая имеет массив указателей кораблей. Элементы массива должны быть инициализированы адресами динамически распределенных объектов Ship, CruiseShip и CargoShip. Затем программа должна пройти через массив, вызывая функцию печати каждого объекта.
#include <iostream>
#include <string>
using namespace std;
class Ship
{
protected:
string ship_name;
int year_built;
public:
Ship()
{
ship_name="";
year_built=0;
}
void set_ship_name(string str)
{
ship_name=str;
}
void set_year(int y)
{
year_built=y;
}
int get_year()
{
return year_built;
}
string get_ship_name()
{
return ship_name;
}
void print(string, int)
{
cout<<"Ship name is "<<ship_name<<" and it was built in the year "<<year_built<<endl;
}
};
class CruiseShip: public Ship
{
private:
int max_passengers;
public:
CruiseShip()// :Ship(str,year)
{
max_passengers=0;
}
void set_passengers(int pass)
{
max_passengers=pass;
}
int get_passengers()
{
return max_passengers;
}
void print1(string, int)
{
cout<<"Ship name is "<<get_ship_name()<<" and max number of passengers are "<<max_passengers<<endl;
}
};
class CargoShip: public Ship
{
private:
int cargo_capacity_in_tons;
public:
CargoShip()//:Ship (str,year)
{
cargo_capacity_in_tons=0;
}
void set_capacity(int pass)
{
cargo_capacity_in_tons=pass;
}
int get_capacity()
{
return cargo_capacity_in_tons;
}
void print2(string, int)
{
cout<<"Ship name is "<<get_ship_name()<<" and its capacity is "<<cargo_capacity_in_tons<<" Tons."<<endl;
}
};
int main(){
CruiseShip ship1;
CargoShip ship2;
string ship_name1;
string ship_name2;
int year_built1;
int year_built2;
int max_passengers;
int cargo_capacity_in_tons;
cout<<"What is the name of the cruise ship?"<<endl;
cin>>ship_name1;
ship1.set_ship_name(ship_name1);
cout<<"What year was "<<ship_name1<<" built in?"<<endl;
cin>>year_built1;
ship1.set_year(year_built1);
cout<<"What is the maximum capacity of "<<ship_name1<<"?"<<endl;
cin>>max_passengers;
ship1.set_passengers(max_passengers);
//ship1.print(ship_name1, year_built1);
ship1.print1(ship_name1, max_passengers);
cout<<"What is the name of the cargo ship?"<<endl;
cin>>ship_name2;
ship2.set_ship_name(ship_name2);
cout<<"What year was "<<ship_name2<<" built in?"<<endl;
cin>>year_built2;
ship2.set_year(year_built2);
cout<<"What is the maximum capacity of "<<ship_name2<<" in tons?"<<endl;
cin>>cargo_capacity_in_tons;
ship2.set_capacity(cargo_capacity_in_tons);
ship2.print2(ship_name2, cargo_capacity_in_tons);
return 0;
}
«Я использую eclipse как мой компилятор». Eclipse - это IDE, а не компилятор. – MrEricSir
Что означало @MrEricSir, так это то, что вы должны google «виртуальные функции C++», а также «полиморфизм указателей базового класса C++». Большинство людей не помогут вам здесь b/c, вы не приложили усилий для исследования проблемы. – TriHard8
Я этого не знал. Я отредактирую свой вопрос ... @MrEricSir – redcardinal