Korzystanie z metody klasy pochodnej w klasie bazowej

0

Mamy programik:

#include <iostream>
#include <conio.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

class Pojazd{
	protected:
		string Nazwa;
	public:
		Pojazd(){
			cout << "Podaj nazwe: ";
		cin >> Nazwa;
		};
	
		string WypiszNazwe(){
			return Nazwa + "\n\n";
		};
		
		void PrzedstawSie(){
			cout << "Jestem " + Nazwa + "\n\n";
		};
};

class Samochod : public Pojazd
{
	public:	
		string WypiszNazwe(){
			return "Samochod " + Nazwa + "\n\n";
		};	
};

int main(int argc, char** argv) {
	Pojazd Traktor;
	cout << Traktor.WypiszNazwe();
	Traktor.PrzedstawSie();
	
	Samochod Auto;
	cout << Auto.WypiszNazwe();
	Auto.PrzedstawSie();
	
	return 0;
}

Po uruchomieniu i wpisaniu nazw otrzymuje:

 Podaj nazwe: Zetor
Zetor

Jestem Zetor

Podaj nazwe: Opel
Samochod Opel

Jestem Opel

Pytanie: W jaki sposób zorbić tak by klasa Samochod w metodzie PrzedstawSie (z klasy bazowej) korzystała ze zmienionej postaci metody WypiszNazwe - czyli w tym wypadku powinna wypisać Jestem Samochod Opel ?

Z góry dzięki !

0

Konia z rzędem temu, kto wytłumaczy o co autorowi chodzi.

1

Wystarczy że palniesz się w glowę za robienie w kodzie kopiuj-wklej.

        virtual string WypiszNazwe(){
            return Nazwa + "\n\n";
        }
 
        void PrzedstawSie(){
            cout << "Jestem " + WypiszNazwe();
        }

Ale musisz skorzystać z polimorfizmu tutaj.

A za każdy zbędny średnik w tym kodzie powienieneś dostawać 10 batów ;]

0

Nie do końca wiem o jakim kopiowanie mówisz, ale kod Twojej modyfikacji działa jak należy :).
A co średników to muszę na tym popracować :D.

@pancake wisisz Shalomowi (tak się deklinuje ten nick?) konia z rzędem :).

Proszę o oznaczenie postu Shaloma jako rozwiązanie.

Dziękuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1