IP: *.eu.org 07.05.06, 18:24
Cześć! Napisałam taki programik ale pojawiają sie błędy kompilacji. Co
poprawić? Konstruktory? Proszę o poradę.


class Indeks
{ public:char imie[10]; char nazwisko[20]; char pesel[11]; char data[10];

Indeks();
Indeks (char *im,char *nazw,char *pes,char *dat);
void wyswietl();
};
class A:
public virtual Indeks
{ int rok;
public:
void wyswietl();
A (char *im, char *nazw , char *pes,int,char *dat);
};
class B:
public virtual Indeks
{ int pensja;
public:
void wyswietl();
B (char *im, char *nazw, char *pes,int,char *dat);
};
class C:
public virtual A, public virtual B
{ int id;
public:

void wyswietl();
C (char *im, char *nazw, char *pes,int,char *dat);
};



Indeks ::Indeks( char *im,char *nazw,char *pes,char *dat)
{ strcpy( imie, im);
strcpy( nazwisko, nazw);
strcpy( pesel, pes);
strcpy( data, dat);
}
void Indeks :: wyswietl()
{
cout<<"Imie: "<<imie<<endl;
cout<<"Nazwisko: "<<nazwisko<<endl;
cout<<"Pesel: "<<pesel<<endl;
cout<<"alarm: \a \a \a \a \a \a \a";
cout<<"Data ur: "<<data<<endl;
}

A :: A (char *im,char *nazw, char *pes,int c,char *dat): Indeks(im,nazw,pes,dat)
{rok=c;}
void A:: wyswietl()
{ Indeks :: wyswietl();
cout<<"rok: "<<rok<<endl;
}
B :: B (char *im, char *nazw, char *pes,int d,char *dat): Indeks(im,nazw,pes,dat)
{ pensja=d;}
void B :: wyswietl()
{ Indeks :: wyswietl();
cout<<"pensja: "<<pensja<<endl;
}
C:: C (char *im, char *nazw, char *pes,int e,char *dat):
A(im,nazw,pes,dat), B(im,nazw,pes,dat), C(im,nazw,pes,dat)
{id=e;}
void C :: wyswietl()
{ A:: wyswietl(); B:: wyswietl();
cout<<"id: "<<id<<endl;
}

int main()
{
A a("Jan","Kowalski", "50684123451",3,"15.06.1984");
B b("Ela","Nowak","12345678911",1200,"30,10,1984");
C x("Ola","Bak","1234567812",1500,"12.23.1980");
a.wyswietl();
b.wyswietl();
x.wyswietl();
system ("pause");
}
Obserwuj wątek
    • hypion Re: Pomocy :) 08.05.06, 08:52
      Głównym źródłem problemów jest konstruktor klasy C . Po pierwsze błędnie
      wywołuje on konstruktory klasy A i B ( wymagają one :
      *char,*char,*char,int,*char a nie *char,*char,*char,*char ) a po drugie wywołuje
      sam ich kod bez wywołania konstruktora klasy macierzystej Index . Moim zdaniem
      ten kawałek kodu powinien wyglądać tak :

      C:: C (char *im, char *nazw, char *pes,int e ,char *dat) : Index
      (im,nazw,pes,dat) , A (im,nazw,pes,0,dat) , B (im,nazw,pes,0,dat) {
      id=e;
      }

      Ponadto w kodzie tym brakuje przyłączenia plików nagłówkowych stream.h i pewnie
      windows.h ( dla funkcji: system ("pause") ).

      Pozdrawiam

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka