• 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?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+3 głosów
272 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ź 331 wizyt
pytanie zadane 10 kwietnia 2015 w C# przez Surykat Stary wyjadacz (14,780 p.)
0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 29 grudnia 2017 w Java przez Midgard Początkujący (390 p.)
0 głosów
5 odpowiedzi 2,286 wizyt

93,195 zapytań

142,211 odpowiedzi

322,058 komentarzy

62,519 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3316p. - dia-Chann
  2. 3251p. - Łukasz Piwowar
  3. 3243p. - Łukasz Eckert
  4. 3222p. - CC PL
  5. 3167p. - Tomasz Bielak
  6. 3157p. - Łukasz Siedlecki
  7. 3133p. - rucin93
  8. 3110p. - Maurycy W
  9. 3028p. - Adrian Wieprzkowicz
  10. 2992p. - Mikbac
  11. 2490p. - Marcin Putra
  12. 2467p. - Michał Telesz
  13. 2427p. - Michal Drewniak
  14. 2372p. - Anonim 3619784
  15. 1949p. - rafalszastok
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...