Rzutowanie na obiekt typu bazowego.

0

Tworzę klasę i klasy do niej pochodne.
Poruszam się polimorficznym wskaznikiem po elementach w vectorze klasy bazowej. Chce aby wywoływana została funkcja z klasy pochodnej, więc używam słowka "override".
W jednej z klas muszę odwołać się jednak do tej samej funkcji, jednak pochodzącej z klasy bazowej.

class Bazowa
{
void do();
}
class Pochodna : Public Bazowa
{
void do() override
}

void Pochodna::do()
{
Bazowa *tmp;
tmp=this;
tmp->do();
}

Probowałem w ten sposob, ale zadziała tutaj (chyba) słówko kluczowe ovveride.
Słabym rozwiązaniem byłoby po prostu przekopiowanie instrukcji z klasy bazowej do klasy pochodnej. Ale własnie, słabym.
Jak mogę to rozwiązać

1

Włóż minimum wysiłku w opisanie problemu. Twój przykład w ogóle się nie skompiluje. Pomijając już nawet proste błędy takie jak brak średników, dziedziczysz prywatnie po klasie. Dodatkowo override tylko sprawdza czy faktycznie nadpisujesz działanie funkcji wirtualnej. Do tego musi być ona wirtualna, tak jak gcc i clang mówą:

error: 'void b::f()' marked 'override', but does not override

error: only virtual member functions can be marked 'override' (fix known)

Teraz tylko wystarczy wkleić to w google i dowiesz się o słowie kluczowym virtual.

1 użytkowników online, w tym zalogowanych: 0, gości: 1