[C++] Klasa z podklasami w C++

[C++] Klasa z podklasami w C++
Setesh
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Wrocław
  • Postów:113
0

Witam,

Potrzebuję stworzyć klasę z podklasami w C++ i nie wiem od czego zacząć szukać.

Mamy główną klasę "Ssaki" w której umieszczone są podklasy "czlowiek", "pies", "kot" itp
Wiem jak stworzyć klasę ale nie wiem jak to zrobić z podkladami. Kod ma wyglądać następująco :

Kopiuj
Klasa->subklasa->metoda("Warrtość zmiennej typu string");
Klasa->subklasa->zmienna = 10;
//np :
Ssaki->czlowiek->kolor_skory("bialy");
Ssaki->czlowiek->wzrost=185;

Jeżeli mogę liczyć na pomoc to będzie miło. Nie pogardzę też przykładem jak to rozwiązać ale bardziej mnie interesuje na podstawie czego szukać aby utworzyć właśnie taki schemat klas.


Linux [Debian], Arduino, Raspberry Pi, ESP8266, C++, Python.
YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:472
0

Nie pisz na priv. Zadaj dobre pytanie na forum.
Setesh
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Wrocław
  • Postów:113
0

Ok może nie wyraziłem sie dostatecznie jasno. Nie chodzi mi tylko o dziedziczenie ale głównie o postać wywołującą daną np metodę w podklasie.

To, że jedna klasa dziewdziczyć moze po drugiej akurat nie jest mi tak potrzebne bo żadna z podklas nie będzie miała wspólnych metod z inną podklasą.
Interesuje mnie bardziej to jak zrobić aby wywołać metodę z podklasy idąc od klasy głównej.

Czyli nie na zasadzie

Kopiuj
podklasa = nowa klasa()
podklasa->metoda("string")

tylko :

Kopiuj
klasa -> podklasa -> metoda("string");
...

Linux [Debian], Arduino, Raspberry Pi, ESP8266, C++, Python.
edytowany 1x, ostatnio: Setesh
Prav
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:25
0

Nie bardzo rozumiem czym jest dla ciebie "podklasa", ale będę strzelał:

Kopiuj
class Kot {
public:
    void cokolwiek_kot_moze_robic() {}
};

class Pies {
};

class Ssaki {
public:
    Kot kot;
    Pies pies;
};

int main()
{
    Ssaki ssaki{};
    ssaki.kot.cokolwiek_kot_moze_robic();
}

Ewentualnie możesz zdefiniować sobie Kot i Pies wewnątrz Ssaki:

Kopiuj
class Ssaki {
    class Kot {
    public:
        void cokolwiek_kot_moze_robic() {}
    };

    class Pies {
    };
    
public:
    Kot kot;
    Pies pies;
};

Byłoby łatwiej gdybyś napisał co chcesz osiągnąć od strony funkcjonalności.

edytowany 1x, ostatnio: Prav
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 8 godzin
1
Setesh napisał(a):

Mamy główną klasę "Ssaki" w której umieszczone są podklasy "czlowiek", "pies", "kot" itp

Źle. Liczba mnoga powinna oznaczać kontener (listę, kolejkę, tablicę) a nie jeden element.
Klasa nadrzędna powinna mieć formę liczby pojedynczej, czyli Ssak.
Tobie jednak chodzi o coś innego - o jakiś właśnie kontener tych różnych ssaków?

Poza tym nie trzymasz się konwencji. Jedną klasę nazwałeś z wielkiej litery, a pozostałe z małej. Powinno być jednolicie.

edytowany 1x, ostatnio: Azarien
Setesh
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Wrocław
  • Postów:113
0

Prav - dziękuję właśnie o takie coś mi chodzi.
Azarien - tak chpdzi w sumie o kontener na klasy. Widać źle opisałem temat i zagadnienie.

Wieczorem pokombinuje z tym :-)


Linux [Debian], Arduino, Raspberry Pi, ESP8266, C++, Python.
Setesh
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 6 lat
  • Lokalizacja:Wrocław
  • Postów:113
0

Dzięki za pomoc. Kilka modyfikacji i działa super :-)


Linux [Debian], Arduino, Raspberry Pi, ESP8266, C++, Python.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.