Ich habe diese Klasse für den Eingang sparen:derzeit keine Speicherfehler in einer Struktur in einer Klasse erreichen
class Recept {
int Ingr_size;
char *Name;
char *Type;
char *Recipe;
struct Ingridient {
char *aName;
float Mas;
} *List_ingr;
, wenn ich mit dieser Funktion Zutat Namen oder Masse versuchen zu sparen:
void Recept::setIngr(const char * p, float mass) {
struct Ingridient * temp = new struct Ingridient[Ingr_size + 1];
if (Ingr_size) {
for (int i = 0; i < Ingr_size; i++)
temp[i] = List_ingr[i];
delete List_ingr;
List_ingr = temp;
}
List_ingr[Ingr_size].aName = new char[strlen(p) + 1];
strcpy(List_ingr[Ingr_size].aName, p);
List_ingr[Ingr_size].Mas = mass;
}
Ich erhalte die Fehlermeldung, dass "aName
Speicher" & "Mas
Speicher nicht erreicht werden kann".
Ich kann das Problem nicht finden, wo oder warum.
Vielen Dank.
Warum bist du nicht mit 'std :: vector' oder' std :: string'? – trojanfoe
Auch das Schlüsselwort 'struct' wird nicht benötigt, wenn es in C++ instanziiert wird. Und Sie können 'std :: list' oder' std :: vector' verwenden, um Ihre Ingridient-Liste zu verwalten, anstatt mit dem rohen Array zu arbeiten – Garf365