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

Metoda wirtualna zwracająca różne typy

Object Storage Arubacloud
0 głosów
425 wizyt
pytanie zadane 3 maja 2015 w C i C++ przez Waszek Gaduła (4,130 p.)
Witajcie Koledzy!

Mam taki oto problem. Mam dwie klasy bazowe Line i Circle a z każdej dziedziczą po 4 klasy pochodne. Tworzę listę składającą się ze wskaźników na klasy bazowe i następny element listy. W zależności od wyborów użytkownika w danym elemencie listy tworzy się odpowiednio obiekt klasy pochodnej. Chce teraz wydrukować dane, które zawierają obiekty. I tu się rodzi problem. Potrzebuje wyciągnąć atrybuty private z każdej klasy pochodnej, czyli strukturę. W każdej klasie jest inna.

I tu się rodzi moje pytanie. Jak to zrobić? Może utworzyć metody wirtualne, ale tu za każdym razem będzie zwracany inny typ. Może utworzyć metodę typu void, która będzie modyfikowała dane w kontenerze i dopiero z tego kontenera wyrzucać dane na ekran.

Proszę o podpowiedzi i dzięki! :)

4 odpowiedzi

+1 głos
odpowiedź 4 maja 2015 przez Kabotyn Mądrala (5,650 p.)
Wprawdzie nie wiele rozumiem z Twojego opisu problemu, ale się wypowiem :)

Może takie coś jak szablony (ang. templates) przyjdą Ci z pomocą jeżeli działasz na różmych typach, a efekt ma być ten sam :)

Może funkcja w każdym obiekcie typu toString() kóra przekształci strukturę na strnnga i go zwróci. I w każdym obiekcie taka funkcja, zawsze wywołujesz tą samą funkcję a efekt jest różny.

O to chodzi? Dobrze kombinuję?
0 głosów
odpowiedź 3 maja 2015 przez Waszek Gaduła (4,130 p.)
Teraz przerzucając internety znalazłem coś takiego jak typeid z nagłówka typeinfo. Mógłbym porównywać wskaźniki i dla odpowiednich obiektów wykonywać ich metody.
0 głosów
odpowiedź 3 maja 2015 przez daan Pasjonat (17,640 p.)
Jeżeli chcesz wydrukować dane to metoda wirtualna, która te dane drukuje nie wystarczy ? Wtedy nie jest istotne ile tych danych jest bo przecież każda klasa definiuje swój sposób wypisania tych danych (metoda typu void ofc) :P
komentarz 3 maja 2015 przez Waszek Gaduła (4,130 p.)
No właśnie o to chodzi, że w projekcie muszę rozgraniczyć logikę z interfejsem. Czyli muszę wyciągnąć dane z obiektu i przekazać je do "drukarki" ;) No i nie mogę użyć metody void, bo musi zwrócić te dane a po drugie dane, które będą zwracane dla każdej klasy będą inne. I tu się rodzi problem ;(
0 głosów
odpowiedź 13 maja 2015 przez Waszek Gaduła (4,130 p.)
Dziękuję za wszystkie odpowiedzi :) skończyło się na przekonstruowaniu programu :) jednak daliście garść cennych wskazówek :)

Podobne pytania

0 głosów
2 odpowiedzi 2,425 wizyt
pytanie zadane 11 marca 2018 w C i C++ przez Utau Użytkownik (900 p.)
0 głosów
1 odpowiedź 469 wizyt
+1 głos
2 odpowiedzi 1,255 wizyt
pytanie zadane 29 stycznia 2019 w C i C++ przez Seqak Początkujący (420 p.)

92,702 zapytań

141,615 odpowiedzi

320,180 komentarzy

62,060 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

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!

...