Bu soru benzer, ancak sınıf içinde gelen işlevini çağırarak hakkındadır: Can I call a base class's virtual function if I'm overriding it?C++ sınıfının dışında bir temel işlev çağırmanın bir yolu var mı?
Bu durumda, geçersiz kılınmış tanımını arayacak olan yerine function()
ait Base::function()
belirtmek istiyorum.
Ama sınıfın bunu dışarıda yapmanın bir yolu var mı? Benim sınıf bir kopya kurucu tanımlamıyor, bu yüzden temel sınıf olarak döküm nasıl çözemedim:
Base(derived_object).function()
Base*
olarak & derived_object
döküm ve sonra ->function()
aramaya burada yapmak için uygun bir şey var mı? sezme için
teşekkürler.
derived_ptr->Base::function();
inşaat iyi:
'static_cast', emin olmadığım halde işe yarayabilir - sanal işlevlerin amacı, çalışma zamanında, nesnenin derleme zamanı türünden bağımsız olarak çözülmesidir ..' dynamic_cast' kesinlikle çalışmaz. –
Niçin isterdin? İşlev türetilen sınıfın bir parçasıysa ve aynı zamanda temel sınıftaysa, temel sınıfı çağırdığınızda muhtemelen yanlış bir şeyler yapıyor olursunuz. Bunu çözmenin en iyi yolu, türetilmiş sınıf tarafından çağrılması gereken taban sınıfında ayrı bir işlev yapmak ve taban sınıfının bu functoion'un kendisini çağırmasına izin vermektir. –
Lütfen aşağıdan @Omnifarious'a bakınız. Bir rapor hale getiren bir Baz nesnesi ve (baz rapordan duydukları ilave bilgilerle) bir rapor oluşturur Türetilmiş nesne var Thanks-- – user