[ fanfare @ 01.02.2010. 16:07 ] @
Problem mi se javlja kada pokuĊĦam pristupiti podatku reg_datum u izvedenoj klasi Automobil da bi ga prikazao u funkciji void Automobil::ispis() koja je nasledjena iz apstraktne klase Vozilo. Kako ovo rijesiti? Zadatak je dat u prilogu! A kod koji sam napisao : Code: #include <iostream> using namespace std; class Datum { public: Datum(int d=1, int m=1, int g=2000) { gg = g; mm = (m>0 && m<=12) ? m : 1; dd = provjeriDan(d); } void print() const { cout<<dd<<'.'<<mm<<'.'<<gg<<'.'<<endl;} private: int dd, mm, gg; int provjeriDan(int dan) { static const int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if (dan>0 && dan<=m[mm]) return dan; if (mm==2 && dan==29 && (gg%400==0 || (gg%4==0 && gg%100!=0))) return dan; return 1; } }; class Vozilo { friend int operator >( Vozilo &v1, Vozilo &v2); public: Vozilo(char *regB, int godP,int d,int m,int g): reg_datum(d,m,g) { reg_broj=new char [strlen(regB)+1]; strcpy(reg_broj,regB); god_proizvodnje=godP; } void registracija(int reg_datum); virtual void ispis()=0; ~Vozilo() { delete [] reg_broj; } protected: char *reg_broj; int god_proizvodnje; Datum reg_datum; }; int operator>( Vozilo &v1, Vozilo &v2 ) { if (v1.god_proizvodnje>v2.god_proizvodnje) return v1.god_proizvodnje; else return v2.god_proizvodnje; } void Vozilo::registracija(int regD) { reg_datum=regD; } class Putnicko:public Vozilo { public: Putnicko(int brP=0,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g) { broj_putnika=brP; } protected: int broj_putnika; }; class Teretno:public Vozilo { public: Teretno(long n=0,char *f,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g) { nosivost=n; firma=new char [strlen(f)+1]; strcpy(firma,f); } ~Teretno() { delete [] firma; } protected: long nosivost; char *firma; }; class Automobil:public Putnicko { public: Automobil(char *i,char *p,int brP,char *regB, int godP,int d,int m,int g):Putnicko(brP,regB,godP,d,m,g) { vlasnik_ime=new char[strlen(i)+1]; strcpy(vlasnik_ime,i); vlasnik_prezime=new char[strlen(p)+1]; strcpy(vlasnik_prezime,p); } void ispis(); ~Automobil() { delete [] vlasnik_ime; delete [] vlasnik_prezime; } protected: char *vlasnik_ime; char *vlasnik_prezime; }; void Automobil::ispis() { cout<<"automobil reg.ozn. "<<Automobil::reg_broj<<endl; cout<<"datum registracije: "<<Automobil::reg_datum<<endl; cout<<"godina proizvodnje: "<<Automobil::god_proizvodnje<<endl; cout<<"vlasnik: "<<Automobil::vlasnik_ime<<" "<<Automobil::vlasnik_prezime<<endl; } main() { Automobil a("Marko","Markovic",5,"802-j-318",1998,1,2,2010); Vozilo *v1; v1=&a; v1->ispis(); system("pause"); } |