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

Przeciazenie operatora a klasa abstrakcyjna

VPS Starter Arubacloud
0 głosów
310 wizyt
pytanie zadane 27 października 2018 w C i C++ przez jankowa1ski Gaduła (3,560 p.)

Musze w c++ zrobic klasę dla dwumianu/jednomianu. Stwierdziłem ze zrobie wiec klase wielomian z ktorej dziedziczyc beda klasy jednomian i dwumian. Klasa wielomian ma wlasciwosci a,b,c gdzie w klasie jednomian w konstruktorze  a=0; o tak:

Jednomian::Jednomian(float wspB,float wspC){
    a=0;
    b=wspB;
    c=wspC;
  }

klasa dwumian wyglada analogicznie.

Wielomian ma tez wirtualna funcje:

  virtual vector <float> obliczPierwiastek()=0;

Ktora zaleznie czy jest to dwumian czy jednomian zwraca wektor z pierwiastkami rowniainia.

Teraz chcę zrobić dodawanie i odejmowanie wielomianow za pomocą przeciążenia operatorów. Mam więc taką funckje w klasie Wielomian:

 Wielomian operator +(const Wielomian & wielomian2){
   //return Wielomian(this->a+wielomian2->a,this->b+wielomian2->b,this->c+wielomian2->c);
}

Z tym że klasa Wielomian jest abstrakcyjna wiec ta funkcja jest bledna bo nie moge zwracac objektu klasy abst. no bo takowy nie istnije. Taj wiec jak to obejść?

Poza pomoca z tymi funkcjami prosze o opinie czy wgl ten pomysl z dziedziczeniem nadaje sie do takiego zadania?

Moglbym w sumie zrobic tylko jedna klase Wielomian i np zaleznie czy a==0 funkcja obliczPierwiastek zwracałaby odpowiednia wartość. Może macie jakies inne elegancjie rozwiazanie? (zalezy mi zeby właśnie ladnie to wygladalo)

 

Dzieki za kazda odp.

1 odpowiedź

0 głosów
odpowiedź 27 października 2018 przez j23 Mędrzec (195,220 p.)

Taj wiec jak to obejść?

Zdefiniuj operatory w klasie pochodnej.

komentarz 27 października 2018 przez jankowa1ski Gaduła (3,560 p.)
Ale czy wtedy będę mógł dodawać np wielomian z dwumianem?
komentarz 27 października 2018 przez j23 Mędrzec (195,220 p.)

Tutaj problemem nie jest typ argumentu, bo referencja do abstrakcyjnej klasy Wielomian jest jak najbardziej poprawna, ale to, że chcesz zwracać przez wartość instancję klasy abstrakcyjnej, a to niemożliwe. Dlatego zaproponowałem przeniesienie operatora do klasy pochodnej, gdzie typem zwracanym w operatorze będzie ów klasa.

Podobne pytania

0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 14 marca 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 251 wizyt

92,959 zapytań

141,921 odpowiedzi

321,152 komentarzy

62,293 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...