Tworzenie obiektów za pomocą pętli

0

Program ma tworzyć ludzi i ich umiejętności. Jak próbuje wpisać napis imie, nazwisko i liczbę 0,1 dla płci program mówi mi że exit status -1. Program robię online w repl.it. Chce nauczyć się programowania obiektowego ale nie jestem w stanie naprawić tego błedu. Proszę o pomoc. tu jest kod

#include <iostream>
using namespace std;
class Czlowiek{
public:
//id
    string imie;
    string nazwisko;
    int plec;
    //podtawowe informacje
    int sila;
    int spolecze;
    int umie_rol;
    int umie_gur;
    int umie_got;
    int umie_bud;
    int umie_rze;
    int umie_art;
    int umie_bad;
    //Tworzenie i pokazywanie
    void stworz(){
    cin>>imie>>nazwisko>>plec;
        if(plec=0){
        sila=rand()%3;
        spolecze=rand()%5;
        umie_rol=rand()%5;
        umie_gur=rand()%5;
        umie_got=rand()%5;
        umie_bud=rand()%5;
        umie_rze=rand()%5;
        umie_art=rand()%5;
        umie_bad=rand()%5;
        }else if(plec=1){
        sila=rand()%5;
        spolecze=rand()%5;
        umie_rol=rand()%5;
        umie_gur=rand()%5;
        umie_got=rand()%5;
        umie_bud=rand()%5;
        umie_rze=rand()%5;
        umie_art=rand()%5;
        umie_bad=rand()%5;  
        }
    }
};
int main(){
srand(time(NULL));
    for(int i=0;i<6;i++){
    Czlowiek c[i];
    (c[i]).stworz();
    }
}
1
int main()
{
    srand(time(NULL));

    Czlowiek ludzie[6];

    for (int i = 0; i < 6; i++) {
      
        (ludzie[i]).stworz();
       
    }
}
2

Wyjaśnienie na czym polega problem:

int main(){
    srand(time(NULL));

    for(int i=0;i<6;i++){
        Czlowiek c[i]; // tworzy tymczasową tablicę `i`-elementową która żyje jedynie na czas jednej iteracji pętli for
        (c[i]).stworz(); // użyj i-tego obiektu tablicy, co WYKRACZA POZA ZAKRES tej tablicy, ostatni indeks to `i-1`, to zapewne prowadzi do Seg Fault.
    }
}
0

Dziękuje za odpowiedz. Naprawiłem działa

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