Mam do napisania pewien dość obszerny projekt i chciałbym go zrobić na klasie abstrakcyjnej jednakże pojawił sie pewien problem którego do końca nie potrafię rozwiązać mianowicie:
Załóżmy że mamy hierarchie dziedziczenia jak poniżej
class Ojciec
{
void virtual napisz() = 0;
};
class Syn: public Ojciec
{
void napisz()
{
printf("jestem synem\n");
}
void opisz()
{
printf("class Syn\n");
}
};
class Corka : public Ojciec
{
void napisz()
{
printf("jestem corka\n");
}
void wypisz()
{
printf("class Corka\n");
}
};
int main ()
{
Ojciec *tab[2];
tab[0] = new Syn;
tab[1] = new Corka;
/* tab[0] -> opisz();
tab[1] -> wypisz(); */
return 0;
}
i teraz wiadomo to się nie skompiluje a moje pytanie jest czy istnieje sposób żeby to się skompilowało i działało poprawnie a jak tak to jaki. Sam wymyśliłem żeby do klasy abstrakcyjnej "władować" wszystkie metody z klas które po niej dziedziczą a potem ograniczać przy dziedziczeniu dostęp do metod (ale nie jestem pewien czy kompilator nie wyrzuci mi stosu błędów że nie zdeklarowałem metod zdeklarowanych jako virtualne z dziedziczenia). Normalnie zrobił bym obiekty class Syn i Corka lecz w projekcie drzewo dziedziczenia ma głębokość 5 poziomów i liczy 27 klas pochodnych. Z góry wielkie dzięki za pomoc.