Posted By: bsw (bsw) on 'CZprogram' Title: Re: C++ a inherited? Date: Tue May 13 08:48:35 2003 > > constructor TResultTabSheet.Create(AOwner: TComponent); > > begin > > inherited Create(AOwner); > > pc := TPageControl.Create(Self); > > with pc do begin > > Align := alClient; > > MultiLine := true; > > Parent := Self; > > end; > > end; > > > > todle optreubju prepsat do C++ (z Delphi) a nevim jak opsat to > "inherited", > > pripadne ceho presne se tyka to Create(AOwner), je to docela urgentni > nevite > > nekdo co s tim pls? > > Nikdy sem v objektovym Pascalu nedelal, takze budu jen hadat, ale neznamena > to > inherited ze se ma volat Create z rodicovsky tridy? Tj. pokud je Presne tak, od BP/TP 7.0, kdy to zavedli, to tak je. tzn volani "inherited <metoda>(params)" v metode <metoda>(params) znamena, ze se provede volani stejne metoty tridy primeho nebo vzdalenejsiho predka. Lze samozrejme pouzit i tvar <predek>.<metoda>(params), ale v tomto pripade je "natvrdo" urceno, ktera metoda ktereho predka se vola. Zlate casy pascalu :-), nicmene C++ je C++. > TResultTabSheet zdedena z TResulSheet tak to bude v C++ asi takhle: > > class TResultTabSheet : public TResultSheet > { > TResultTabSheet(TComponent AOwner) : TResultSheet(AOwner), pc(this) > { > pc.Align = alClient; > pc.MultiLine = true; > pc.Parent = this; > } > } > Presneji by melo byt pc inicializovano na pc(new TPageControl(this)), podle vyse uvedeneho prikaldu, ale to je detail, na ktery by casem jiste prisel sam :-). > Pokud chapu dobre ze Create je vlastne konstruktor (kterej se v C++ menuje > stejne jako trida), a pc je class member tridy TPageControl. Jinak AOwner > bude > hodne pravdepodobne ukazatel, ne primo objekt. Ano, v pascalu se konstrutory mohly menovat ruzne :-). Vetsinou se jemnovavaly Init, Load (destruktory Done apod). Pzdeji prisel take constructor Create :-). Doporucuji shlednout interface dane tridy, to musi byt dostupne na rozdil od implementacni casti (me blahe pameti). Dale ano, v C++ se ctor i dtor menuji stejne jako je pojmenovana trida, dtor zacina tildou, muze byt jen jeden. Ctor-u muze byt vice. Pozor, uvedene metody slouzi k inicializaci a deinicializaci instance tridy, a nevraci (explicitne) zadnou hodnotu (coz je obcas neprijemne). bsw ---------------------------------------------------------------- | mailto:bsw@centrum.cz | GSM +420 603 794 492 | ICQ# 31499029 | ----------------------------------------------------------------