Hollosi Information eXchange /HIX/
HIX CODER 2294
Copyright (C) HIX
2005-07-28
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: Borland C++ Builder (mind)  63 sor     (cikkei)

+ - Re: Borland C++ Builder (mind) VÁLASZ  Feladó: (cikkei)

Hi!

Public nem public?
Valószínüleg a Származtatásnál nem publikusan örököltél (nem írtad ki a
public-ot a "class Újosztály : RégiOsztály {" sorba), ezért nem láthatók
a RégiOsztály public alatt deklarált válozói. Ha nem publikusan örökölsz,
akkor a property-s változókat még nyílvánossá teheted egy egyszerű típus
nélküli felsorolássa
Egy kis példa:
// Ős osztály ---
class TSzlaSor {
private:
double Fdb,Fear,Fafa;    //privát adatok (utód osztály is látja)
public:
AnsiString megn,me,afas; //közvetlen hozzáférésú adatok
void __fastcall Clear(); //adatok törlése
__fastcall TSzlaSor();   //kunstruktor
__property double db  = {read = Fdb ,write = Fdb }; //privát adatok közvetve
__property double ear = {read = Fear,write = Fear}; //ezek publikusak
__property double afa = {read = Fafa,write = Fafa};
};
void __fastcall TSzlaSor::Clear() { 
  megn="";me="";afas="";db=0;ear=0;afa=0; 
}
__fastcall TSzlaSor::TSzlaSor() { Clear(); }
// Származtatott osztály ---
class TSzlaTetel : public TSzlaSor  {
private:
double __fastcall GetErtek();
double __fastcall GetAErtek();
double __fastcall GetBErtek();
public:
AnsiString vtsz;
void __fastcall Clear(); //adatok törlése (a TSzlaSor->Clear() helyett ez lesz)
__fastcall TSzlaTetel(); //kunstruktor
//__property db,ear,afa;   //ez kell,ha nem publikusan örökölsz!
__property double Ertek       = {read = GetErtek }; //privát függv. alkalmazása
__property double AfaErtek    = {read = GetAErtek}; //ezek publikusak
__property double BruttoErtek = {read = GetBErtek};
};
void   __fastcall TSzlaTetel::Clear() { vtsz=NULL;TSzlaSor::Clear(); }
double __fastcall TSzlaTetel::GetErtek() { return ear*db; }
double __fastcall TSzlaTetel::GetAErtek() { return Ertek*afa/100; }
double __fastcall TSzlaTetel::GetBErtek() { return Ertek+AfaErtek; }
__fastcall TSzlaTetel::TSzlaTetel() : TSzlaSor() { Clear(); }
//---
TSzlaTetel z;
TSzlaTetel *t;
void __fastcall Feltolt() {  t = new TSzlaTetel();
 z.megn="alma";z.db=5;z.me="kg";z.afa=15;z.afas="15";z.ear=60;
 t->megn="alma";t->db=5;t->me="kg";t->afa=15;t->afas="15";t->ear=60;
 Form1->Label1->Caption = z.BruttoErtek;
//Form1->Label1->Caption = t->BruttoErtek;
 delete t;
}//---

Az "improper use of typedef..." a namespace vagy class nevek nem 
megfelelő
használatának eredménye...

üdv: Lec

(webes bekuldes, a bekuldo gepe: gulacsi.nkoros.microsystem.hu)

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS