Czyzby przestalo dzialac dziedziczenie?

0

Witam,
No wlasnie, dzis delphi ( Delphi 7 ) zaskoczyl mnie <ort>poraz </ort>kolejny... mam pewna hierarchie
obiektow, ze wzgledu na jej <ort>skaplikowanie </ort>nie bede jej przytaczal. Generalnie
chodzi o to ze, jest sobie klasa TBase.

TBase = class( TObject )
protected
...
procedure DoIt; virtual; abstract;
procedure DoIt2; virtual; abstract;
function Cos :Integer; virtual; abstract;
...
public
...
procedure blee;
procedure au; virtual;
...
end;

Nastepnie sa klasy: TA, TB ktore dziedzicza po TBase. Gdzie metody abstrakcyjne wyposazane sa w ciala ( przy uzyciu slowa kluczowego override ). I <ort>szlak </ort>mnie trafia, bo klasa TA dziala jak
nalezy, a TB twierdzi ze zawiera metody abstrakcyjne. Owszem czesc zostala przedefiniowana, ale
reszty nie widzi. A jak usune napis override, przy takiej metodzie, ktorej kompilator nie widzi. To dostaje ostrzezenie ze klasa TB przeslania metode klasy bazowej. A jak dam override, to ze klasa TB zawiera metode abstrakcyjna.

Spotkal sie ktos z czyms takim?

Pozdrawiam, przyszly uzytkownik Visual Studio 2005.

0

Po pierwsze. Może spróbuj pozbyć się słowa abstract zostawiając samo virtual. Po drukie, czy unit z klasą TB jest w tym samym folderze, co bazowa?

Teoretycznie jeśli nie, to nie powinien w ogóle widzieć metod protected, no, ale może...

0

Hej,
Sprawa sie wyjasnila... delphi cos namieszalo. Okazalo sie ze jednej funkcji nie potraktowalem jako override. Niestety kompilator mi tego nie wyswietlil... i zaczal wariowac, czyli zglaszac bledy tam gdzie ich nie ma. Nie pierwszy raz mam takie dziwne klopoty z Delphi... Ot... i caly problem.

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