Ich habe dynamische Array in Struct und eine Methode, die das dynamische Array verwendet. Das Problem ist, dass ich einen Bereichsverletzungsfehler erhalte, wenn ich das Programm ausführe. Wenn ich jedoch ein neues dynamisches Array innerhalb der Methode erstelle, funktioniert es gut. Der folgende Code verursacht ein Problem.Fehler: Bereichsverletzung in D-Programmierung
struct MyStr {
int[] frontArr;
this(int max = 10) {
frontArr = new int[10];
}
void push(int x) {
frontArr[0] = x;
}
}
void main() {
MyStr s;
s.push(5);
}
aber diese funktioniert;
struct MyStr {
int[] frontArr;
this(int max = 10) {
frontArr = new int[10];
}
void push(int x) {
frontArr = new int[10]; // <---Add this line
frontArr[0] = x;
}
}
void main() {
MyStr s;
s.push(5);
}
füge ich im Grunde, dass die Linie, den Umfang zu testen. Es scheint so, als ob der initialisierte FrontArr nicht in der push (int x) -Methode gesehen werden kann. Irgendeine Erklärung?
Vielen Dank im Voraus.
Welche Art von Problem haben Sie? – stonemetal
Haben Sie versucht, einen Writefln-Aufruf in den Konstruktor zu stellen, um sicherzustellen, dass er tatsächlich ausgeführt wird? –
@DK Das ist eine gute Idee. Ja, der erstellte Konstruktor wird nie aufgerufen. – Nate