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

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 :

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.

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

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

tylko :

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

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

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:

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.

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.

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 :-)

0

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

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