mam klasę X zawierającą metodę fill(). Jest ona odpalana m.in. przez konstruktor tej klasy. Teraz tworzę klasę pochodną Y, która dziedziczy X. Chciałbym aby Y dalej zawierała metodę fill(), ale już posiadającą nieco inną definicję. Początkowo chciałem dopisać tylko “virtual” do metody w klasie X i na nowo napisać inną definicję w klasie Y, ale dalej konstruktor korzysta z pierwotnej wersji tej metody. Czy istnieje jakiś modyfikator, który pozwoli na to aby klasa Y korzystała od razu z nowej wersji metody (nawet w odziedziczonym konstruktorze)?
Konstruktor klasy X nie może wywołać metody klasy Y, która dziedziczy po X, gdyż obiekt klasy Y jest konstruowany dopiero po wykonaniu konstruktora klasy X. Można to obejść poprzez przekazanie typu klasy dziedziczącej do klasy X i w konstruktorze klasy X rzutować wskaźnik this na typ klasy dziedziczącej, ale trzeba to robić świadomie i liczyć się z ewentualnymi konsekwencjami.