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

Dostęp do metod klasy dziadka?

Object Storage Arubacloud
+3 głosów
229 wizyt
pytanie zadane 16 kwietnia 2015 w C i C++ przez rrbrigade Nowicjusz (150 p.)
No właśnie, czy jest możliwy?

Jeśli klasa B dziedziczy po A, a klasa C dziedziczy po B to czy można (jak?) wywołać w klasie C metodę z dziadka A? Próbowałem A::metoda() ale coś nie za bardzo ('A' is not accesible base of 'C')

Aha, public jest poustawiane jakby co.

1 odpowiedź

+3 głosów
odpowiedź 16 kwietnia 2015 przez Nifrez Obywatel (1,090 p.)
#include <iostream>
using namespace std;

class A{
public:
void show(){cout << "test";}
};
class B:public A{};
class C:public B{};
int main()
{
    C objC;
    objC.show();
    system("pause");
    return 0;
}
komentarz 16 kwietnia 2015 przez Mister123450 Dyskutant (8,700 p.)
edycja 17 kwietnia 2015 przez Mister123450
Nieprecyzyjny ten kod.
komentarz 16 kwietnia 2015 przez rrbrigade Nowicjusz (150 p.)
Ech, nie byłem chyba precyzyjny, więc może teraz na przykładzie powyższego kodu:

class A{
public:
void show(){cout << "test";}
};
class B:public A{
public:
void show(){
    A::show();
    //a tu coś jeszcze bla bla bla
    }
};

class C:public B{
public:
void show(){
    //B::show() zadziała ale chciałbym się dostać tylko do
    A::show();
    //i nic z tego
    }
};
komentarz 17 kwietnia 2015 przez Nifrez Obywatel (1,090 p.)
edycja 17 kwietnia 2015 przez Nifrez
Nie żeby co ale twój sposób mi działa. Nie wiem czemu Ci nie.

Ale możesz spróbować tego.

Dodatkowo twoim błędem chyba było brak słowa public przy dziedziczeniu[ chyba że ten kod u góry był dosłownie skopiowany ]

http://stackoverflow.com/questions/9709899/how-to-implement-inheritance-in-c-and-resolve-the-error-parent-class-is-not-a <-- tutaj m.in rozwiązanie.

 

#include <iostream>
using namespace std;

class A{
public:
void show(){cout << "Jestem Dziadek A\n";}
};
class B:public A{
public:
void show(){
    A::show();
    cout << "Jestem Tata B\n";
    }
};

class C:public B{
public:
void show(){
    //B::show() zadziała ale chciałbym się dostać tylko do
    A::show();
    cout << "Jestem Syn C\n";
    }
};
int main()
{
    C objC;
    objC.show();
    system("pause");
    return 0;
}
komentarz 17 kwietnia 2015 przez rrbrigade Nowicjusz (150 p.)
No tak. Gratuluję fachowej czujności - oczywiście wygłupiłem się i jednak zapomniałem wstawić w kluczowym miejscu przy dziedziczeniu (z dziadka na ojca) publica.
 Dzięki wszystkim za cierpliwą pomoc

Podobne pytania

+1 głos
1 odpowiedź 294 wizyt
pytanie zadane 10 kwietnia 2015 w C# przez Surykat Stary wyjadacz (14,780 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 29 grudnia 2017 w Java przez Midgard Początkujący (390 p.)
0 głosów
5 odpowiedzi 1,936 wizyt

92,579 zapytań

141,429 odpowiedzi

319,655 komentarzy

61,962 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...