C++ String operator=

0

stworzylem strukture danych

struct kategorie{
   short int id;
   string nazwa;  
   };

tworze dynamiczna tablice struktur

short int *rozmiar_listy_kategorii=new short int;
(*rozmiar_listy_kategorii)=0;
kategorie *lista_kategorii=new kategorie[*rozmiar_listy_kategorii];
    

podczas wprowadzania wartosci program sie wysypuje
nie rozumiem dlaczego nie moge przypisac stringa do stringa

string s;
cin >> s;
            
lista_kategorii[*rozmiar_listy_kategorii].id=*rozmiar_listy_kategorii;
            
lista_kategorii[*rozmiar_listy_kategorii].nazwa= s;

probowalem przypisac w stylu s1 (s2), s1=s2.c_str() ale to nic nie daje

2
jakubbursztyn napisał(a):
short int *rozmiar_listy_kategorii=new short int;

Po co ten wskaźnik?

kategorie *lista_kategorii=new kategorie[*rozmiar_listy_kategorii];

lista_kategorii[*rozmiar_listy_kategorii].id=*rozmiar_listy_kategorii;

Wyjeżdżasz poza tablicę, na tej samej zasadzie co:

int *tab = new int[N];
tab[N] = 1; // błąd, indeksy są od 0 do N-1
1
(*rozmiar_listy_kategorii)=0;
kategorie *lista_kategorii=new kategorie[*rozmiar_listy_kategorii];

Ledwo linia wyżej mówisz, że coś ma wartość 0, a potem tworzysz "tablicę" o rozmiarze coś.

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