mam odniesienie ref
:Jak wywołać metodę wirtualną bez efektu polimorficznego?
Foo &ref = ..
chciałbym wywołać metodę ref.say()
który jest zdefiniowany jako wirtualny w Foo
i wiem, że na pewno jest to nadpisane w klasach potomnych (bo pisałem je również).
Jednak chciałbym nazwać say
tak, jakby był nie polimorficzny, więc wersja, która jest zdefiniowana w Foo, a nie w klasach dla dzieci.
Jak to zrobić?
Jedną rzeczą, która przychodzi mi do głowy, jest przyjmowanie wskaźnika ref
, niż dereferencja i ta sztuczka powinna zabić polimorfizm, ale nie jestem pewien, czy to gwarantuje uzyskanie pożądanego efektu.
Uwaga, nie siedzę w Foo ani żadnym z jego dzieci, drzewo Foo jest strukturą zewnętrzną z mojego bieżącego POV.
Wspaniale, byłem całkowicie nieświadomy takiej składni. – greenoldman
@greenoldman prawdopodobnie widziałeś użycie takie jak 'Base :: foo()' wcześniej, aby wywołać implementację bazy. To naprawdę oznacza po prostu 'this-> Base :: foo()', ponieważ 'this' jest niejawne. – Simple
@ Prosto, dziękuję. Myślałem o tej składni jako o ustawieniu zakresu. – greenoldman