Problem z Tworzeniem obiektow klas

0

Witam.
Niedawno zacząłem programować i mam problem z tworzeniem obiektów klas. Mam klasę bazą i z niej dziedziczę do drugiej.
Klasa bazowa to Osoba a klasa pochodna Mezczyzna

 Osoba::Osoba( string nazwa, string nazwa2, string pesel):nazwisko(nazwa2), imie(nazwa), PESEL(pesel)
//tutaj wszystkie wartosci sa recznie podawane
Mezczyzna::Mezczyzna(const Osoba & poch)
//tu z klasy Osoba przypisywana jest wartosc nazwisko. Dwie skladowe imie oraz PESEL sa generowane na podstawie random
srand(time(NULL));
string tmp[]={"adam","michal","marcin","bartosz","zygmunt", "zbigniew" };
imiee_=tmp[rand()%5];
nazwiskoo_=poch.nazwisko;
 

W przypadku tworzenia obiektów klasy bazowej nie ma problemu. Jeżeli staram się wywołać np. 3 obiekty klasy pochodnej to każdy obiekt ma to samo imię i pesel jakby za każdym razem wylosowano to samo.
Jak pozbyć się tego błędu ?

Za pomoc z góry dziękuję

0

srand() wywołujesz tylko raz, na początku programu

0

Dzięki za szybką i dobrą diagnozę :)

Jeszcze mam problem z funkcją

 //plik cpp w innej klasie
sPESEL (string , string);

która jest dziedziczona wirtualnie z klasy czysto wirtualnej . Przy tym występuję błąd "expected primary-expression before ',' token" oraz "expected primary-expression before ',' token" , którego nie rozumiem i co dziwne występuje w jednej klasie z czterech.
Za pomoc z góry dziękuje.

0

mam problem jeszcze z jedną rzeczą. Otóż gdy umieszczę fragment kodu

   srand(time(NULL)); 
string pESEL[10];
string tmpa[]={"0","1","2","3","4","5","6","7","8","9"};
string tmpa2[]={"0","1","2","3"};
pESEL[0]=tmpa[rand()%10];
pESEL[1]=tmpa[rand()%10];
for(int i=2;i<5;i++)
pESEL[i]=tmpa2[rand()%4];
for(int k=5;k<11;k++)
pESEL[k]=tmpa[rand()%10];
for(int j=0;j<11;j++)
cout<<""<<pESEL[j];
cout<<endl;

bezpośrednio w main to działa. Jeśli natomiast spróbuje stworzyć void generator(){ ten kod } i wywołam w main() { generator() } to program się wysypie choć nie ma nawet worning. W czym tkwi problem ?

0
  1. Naucz się pisać kod jak człowiek. Za zmienne typu tmpa i tmpa2 powinieneś dostać dożywotni zakaz programowania.
  2. Naucz się używać debuggera, ułatwia życie...
  3. Wysypuje się bo tablica pESEL ma 10 elementów a ty chcesz sobie wypisać elementy od 0 do 10, czyli 11 elementów.

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