To pytanie jest podobna, ale jest o wywołaniu funkcji od wewnątrz klasy: Can I call a base class's virtual function if I'm overriding it?Czy istnieje sposób wywołania funkcji podstawowej poza klasą w C++?
W takim przypadku, można by określić Base::function()
zamiast function()
, który wywoła zastąpiona definicją.
Ale czy jest jakiś sposób na zrobienie tego poza klasą? Moja klasa nie definiuje konstruktor kopiujący, więc nie mogłem dowiedzieć się, jak rzucić jako klasy bazowej:
Base(derived_object).function()
jest właściwą rzeczą do zrobienia tutaj, aby rzucić & derived_object
jak Base*
a następnie zadzwonić ->function()
?
Dzięki za twój wgląd.
'static_cast' może działać, chociaż nie jestem pewien - punktem funkcji wirtualnych jest to, że są one rozwiązywane w czasie wykonywania, niezależnie od typu czasu kompilacji obiektu.' Dynamic_cast' z pewnością nie zadziała. –
Dlaczego chcesz? Jeśli funkcja jest częścią klasy pochodnej, a także klasy bazowej, prawdopodobnie robisz coś złego, gdy wywołujesz klasę podstawową. Lepszym sposobem rozwiązania tego problemu jest stworzenie oddzielnej funkcji w klasie bazowej, która ma być wywołana przez klasę pochodną, i niech klasa bazowa wywoła tę funkcję. –
Proszę zobaczyć komentarz do @Omnifarious poniżej. – user