У меня есть 2 класса. Базовый класс имеет функцию виртуального отображения и переменную типа shipname и дату. Функция display() в базовом классе печатает название судна. У производного класса есть переопределение отображения(), которое также печатает имя судна и переменную-член y.Вызов виртуальной функции в производном классе
void Ship::display(){
cout << shipName << endl << manufactureDate < <endl;
}
void CruiseShip::display(){
cout << shipName << maxNoOfPassengers << endl;
}
У меня есть цикл, который вызывает объект из базового класса и объекта из производного класса, но он выводит только одно имя корабля вместо два
Когда слово дисплея от производного класса Я, название судна является пустым , но когда я вызываю его из базового объекта, он возвращает свое значение.
void main(){
Ship sh;
CruiseShip cruShip;
CargoShip cargShip;
sh.setName("Monster");
sh.setDate("11/11/2011");
cruShip.setNoOfPassengers(10);
cargShip.setCapacity(1000);
/*Ship *x[3] = {&sh, &cruShip, &cargShip};
for(int i=0;i<3;++i){
x[i]->display();
}*/
cout<<sh.getName()<<endl;
cout<<cruShip.getName()<<endl;
cout<<cargShip.getName();
system("pause");
}
монстр показывает только от объекта ш
Um. Возможно, вам нужно позвонить setName() на cruShip и cargShip? –
Вы только установили имя на 'sh'. Какие имена вы ожидаете от других, и почему? –
Когда я наследую от класса, я получаю его переменную, которая является ShipName, тогда я устанавливаю shipName в объекте sh, потерял ли это значение, когда я вызываю его из другого класса? – MohamedAbbas