Aktywne Wpisy

MiniKierownik +51
Murzyn rośnie jak na drożdżach, możecie mu wymyślić imię, komentarz z największą liczbą plusów wygrywa. Widać że to będzie chad wśród gołębi, gęste grube pióra będzie miał nawet na nogach, oczy typu Hunter eye wypatrują kukurydzy.
#smiesznypiesek #ptaki #heheszki #codziennymurzyn #golebie #dwudniowymurzyn
#smiesznypiesek #ptaki #heheszki #codziennymurzyn #golebie #dwudniowymurzyn
źródło: temp_file508722841007941077
Pobierz
zyd_z_pasji +31
Jezus Maria, jak ja qurwa nienawidzę dzieci. Gówniarze sąsiadów lvl 4 i 6 przeskakują przez płot, żeby pobawić się u nas na podwórku. Tu sobie poskaczą na trampolinie, tam zjadą na zjeżdżalni albo rozwalą dachówki, które były ułożone na kupce do wyrzucenia. Oczywiście, rozmowy z madkom nic nie dają, a jedyne rozwiązanie to chyba tylko mur wyższy od mego, albo drut kolczasty.
Teraz wychodzę przez dom, a tu mój samochód cały w
Teraz wychodzę przez dom, a tu mój samochód cały w





Cześć, jestem początkujący w programowaniu obiektowym i natknąłem się na pewien problem, którego nie jestem w stanie rozwiązać. Mianowicie mam abstrakcyjną klasę Organizm, po której dziedziczą klasy typu 'Koala', 'Kon', 'Ptak'. Do tego chcę, aby w klasie Organizm istniała metoda nowyOrganizm, która tworzy nowy obiekt (a dokładniej wskaźnik):
Organizm *child = new Koala, new Ptak, new Kon;
No właśnie... mógłbym zaimplementować metodę w każdej z klas pochodnych z new 'typ klasy bazowej' ale chcę wykorzystać polimorfizm.
No i rodzi się pytanie, czy jest w C++ jakiś mechanizm, który pozwala zwrócić typ obiektu this? Coś na zasadzie
Organizm *child = new instanceof(this).
Ułatwiłoby mi to dość mocno życie.
P.S próbowałem z konstruktorami kopiującymi, ale wychodzi na to, że wskaznik child wskazuje na to samo miejsce w pamieci co parent, a chce, by byla na nowo alokowana pamiec.
Organizm stwurzŹwierze(string nazwaŹwierza) {
if (nazwaŹwierza == "koala") {
return new Koala();
}
itp.
Nadklasa nie powinna wiedzieć nic o podklasach i nie próbować ich tworzyć/nijak ingerować w ich atrybuty/rzutować na nie/tym podobne.
Jak to zrobić poprawnie? Nadklasa organizm może posiadać metodę "nowy organizm", która może być abstrakcyjna. Podklasy przeciążają tę metodę i zwracają nowy obiekt podklasy.
Może czegoś nie rozumiem, ale co to ma do tej klasy? To są operacje związane z tym wektorem
Może pokaż cały kod
@megaloxantha: Chciałem mało pisać, bo skoro każda podklasa ma mieć tę samą metodę tylko z różnym new 'Typ', to może dobrze byłoby dziedziczyć tą metodę po klasie bazowej i tylko przekazywać do niej referencję. Ale widocznie tak jest niepoprawnie ( ͡° ʖ̯ ͡°)
Po to c++ ma multidziedziczenie i system szablonów żeby nie robić kopiuj-wklej.
A ogólnie to od czystego OO zaczyna się odchodzić właśnie z takich powodów, ta abstrakcja po prostu nie działa za dobrze.
@lionbest: Dzięki, poczytam o tym.
@CrazyBaran: Tak, napisałem bardziej szczegółowo w drugim komentarzu. Dokładniej, szukałem rozwiązania, które omijało by przeciążanie. Chciałem użyć dziedziczenia, żeby nie overridować tej samej metody w kółko dla klas pochodnych gdzie różni się tylko 'new własny_typ'
Tylko generalnie musiałoby to być wywoływanie z funkcji wirtualnych danej klasy co wiąże się z tym że wyszłoby na to samo co zrobienie new A, new B, new C w danych funkcjach klasy. Jedynym wyjściem byłoby wywoływanie tego spoza klas przez normalny new decltype.
Trzeba czekać na reflekcje (╥﹏╥)
Komentarz usunięty przez autora
https://wandbox.org/permlink/uUgTfX3Z08JcXSxT