Hej. Próbuję zrozumieć programowanie obiektowe. Mam taki przykład, dlaczego dostaję crasha? Przecież te wskaźniki cały czas wskazuję na to samo miejsce w pamięci (chyba).
Jak mam rozwiązać taki problem bez umieszczania funkcji wirtualnej z klasie bazowej? Mając jedną klasę bazową i 10 pochodnych z czego gdy każda ma np. po 15 metod robi się dodatkowe 150 metod wirtualnych w klasie bazowej co daje niezły syf. Jak takie coś rozwiązać?
#include <cstdio>
class KlasaBazowa {
//virtual void Funkcja() = 0;
};
class KlasaPochodna : public KlasaBazowa {
public:
virtual void Funkcja() { printf("Funkcja()\n"); }
};
int main() {
KlasaPochodna* pochodna = new KlasaPochodna;
pochodna->Funkcja();
KlasaBazowa* bazowa = pochodna;
KlasaPochodna* pochodna2 = reinterpret_cast<KlasaPochodna*>(bazowa);
pochodna2->Funkcja();
getchar();
return 0;
}