Dziedziczenie i zmiana definicji funkcji przez potomka?

Dziedziczenie i zmiana definicji funkcji przez potomka?
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam.
Chodzi o to że mam kilka klas powiedzmy klasaA, klasaB, klasaC i klasaD
teraz tak klasaC i klasa D dziedziczą z klasyB
a w klasieA jest vector<klasaB*>
i teraz klasieB jest sobie tam jakaś metoda()
jest ona wywoływana w klasieA vector->metoda()
ale każda klasa potomna chce mieć własną definicję tej metody bo np: w klasieC podtrzebne jest tam operacja na x,y,z a w klasieD tylko na x.

Mam nadzieję że mnie rozumiecie xd
Teraz nie mam pojęcia jak coś takiego zrobić i czy jest to w ogóle możliwe ?
Bo dotychczas miałem osobny kontener na każdą klasę potomną po B ale to nie jest chyba najładniejsze rozwiązanie :(

Proszę o pomoc :)

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#include <iostream>
using namespace std;
 
struct B { virtual void metoda()=0; };
struct C:public B { virtual void metoda() { cout<<"C"<<endl; } };
struct D:public B { virtual void metoda() { cout<<"D"<<endl; } };
 
int main()
  {
   B *tb[]={new C,new D};
   for(size_t i=0;i<sizeof(tb)/sizeof(*tb);++i) tb[i]->metoda();
   return 0;
  }

http://ideone.com/awH2tW

mic4ael
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Metody wirtualne.

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.