• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziedziczenie - jak dostać się do zmiennej protected z klasy bazowej.

VPS Starter Arubacloud
0 głosów
325 wizyt
pytanie zadane 7 stycznia 2017 w C i C++ przez Jedyn Obywatel (1,200 p.)
Witam, jestem w trakcie robienia zadania 3 pliku http://docdro.id/9zmHCOT . Niestety napotkałem wiele problemów. Przykładowo, metoda wyświetl z klasy TaxiM korzysta z funkcji string formatuj(int pom) w celu przekonwertowania wyniku, któy jest groszami na złote oraz grosze. Samą funkcje wiem jak stworzyć tylko jak przekazać kwotę obliczoną z klasy TaxiM, np coś takiego
"koszt_zl=start+((km*stawka)/100)
koszt_gr=start+((km*stawka)%100) "
Oraz kolejny problem. W klasie pochodnej Taxi muszę uwzględnić koszt jazdy poza miastem (czyli jakoś edytować funkcję wyswietl?)
Tutaj próbuje coś kombinować: https://github.com/jeddyn/TaxiM

2 odpowiedzi

+1 głos
odpowiedź 7 stycznia 2017 przez timrh Mądrala (6,030 p.)
wybrane 7 stycznia 2017 przez Jedyn
 
Najlepsza

Być może z tą zewnętrzną funkcją string mającą na celu zwrócenie stringa przechowującego złote i grosze chodziło o coś takiego?

 

string Formatuj(int pom)
{
    int zlote = 0;

    while (pom >= 100)
    {
        zlote++;
        pom -= 100;
    }

    return to_string(zlote) + " " + to_string(pom);
}

PS. Sory, nie doczytałem pytania, za chwilę postaram się odpowiedzieć na jego dalszą część

komentarz 7 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
Okej tylko jak ja mam się odnieść do Formatuj w metodzie wyswietl?
komentarz 7 stycznia 2017 przez timrh Mądrala (6,030 p.)

Formatuj to zewnętrzna metoda, można więc odnieść się do niej z każdego miejsca programu.

string Formatuj(int pom)
{
	int zlote = 0;

	while (pom >= 100)
	{
		zlote++;
		pom -= 100;
	}

	return to_string(zlote) + "zl, " + to_string(pom) + "gr";
}

class TaxiM
{
protected:
	int start;
	int km;
	int stawka;

public:
	void Wyswietl()
	{
		cout << Formatuj(start + stawka * km);
	}
//reszta kodu
};

 

komentarz 7 stycznia 2017 przez timrh Mądrala (6,030 p.)

A potem w klasie Taxi uwzględniasz też koszt jazdy poza miastem:

	void Wyswietl()
	{
		cout << Formatuj(start + stawka * km + km_strefa * stawka_strefa);
	}

 

komentarz 7 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
Dokładnie o to mi chodziło. Dzięki wielkie ;). Funkcję formatuj miałem zadeklarowaną w mainie, nie dałem ścieżki dostępu i dla tego jej nie widziało.
komentarz 7 stycznia 2017 przez timrh Mądrala (6,030 p.)
Jeśli pomogłem, oznacz odpowiedź jako najlepszą.
komentarz 7 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
Jeszcze tylko takie pytanie na szybko. Jak w mainie próbuje wywołać obiekt który stworzyłem tzn
Taxi* p1 = new Taxi(argumenty);

p1->wyswietl;
 to wyskakuje mi błąd "Non standard syntax; use & to create a pointer member" wiesz może o co chodzi?
komentarz 7 stycznia 2017 przez timrh Mądrala (6,030 p.)

Do funkcji zawsze nawiasy.

    p1->Wyswietl();

 

+1 głos
odpowiedź 7 stycznia 2017 przez Michał Kazula Pasjonat (19,540 p.)
Zmienna protected jest dziedziczona do klasy pochodnej. Napisz sobie metody w klasie dziedziczącej do ustawiania i odczytywania wartości zmiennej :-). Często nazywa się je setZmienna i getZmienna.
komentarz 7 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
Właśnie w tym problem ,że nie wiem jak to napisać. Tak samo nie wiem jak zwrócić napis będący liczbą całkowitą przekazaną przez parametr zapisaną w złotych i groszach gdzie mamy zwrócić stringa z jednym parametrem.
komentarz 8 stycznia 2017 przez unknown Nałogowiec (39,560 p.)

Zmienna protected jest dziedziczona do klasy pochodnej.

Wszystkie zmienne i metedy, nawet prywatne, są dziedziczone. 

Podobne pytania

0 głosów
1 odpowiedź 661 wizyt
0 głosów
2 odpowiedzi 791 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...