Ich habe vor kurzem begonnen, D zu lernen, und weiterhin Vorlagen. Ich wollte ein kleines Beispiel machen, um das Lesen zu verstärken, aber dann bekomme ich diesen Fehler oben.Dlang Fehler 42: Symbol nicht definiert
Speziell für meinen Code, sagt es:
using_point.obj(using_point)
Error 42: Symbol Undefined _D6points7_arrayZ --- errorlevel1
mein Code hier:
module point;
class Point(Type: long) {
public string name;
public Type[] locations;
alias Type T;
this(string name, Type[] magnitudes) {
this.name = name;
for(int i = 0; i < magnitudes.length; i++)
locations ~= magnitudes[i];
}
override
public string toString() {
string output = this.name ~ " = (" ~ this.locations[0];
for(int i = 1; i < locations.length; i++)
output ~= "," ~ this.locations[i];
output ~= ")";
return output;
}
}
und Haupt:
module using_point;
import std.stdio;
import point;
void main() {
byte[] mags = [1,2,3];
auto p1 = new Point!byte("P", mags);
}
Ich verstehe, dass es ein Verbindungsfehler ist, aber da Ich benutze keine externen Bibliotheken und ich denke, ich habe den Konstruktor für Point richtig definiert, ich kann das p nicht finden Problem.
Was ist Ihr Kompilierungsbefehl? Wenn du dmd main.d point.d klägst - beide Dateien gleichzeitig - sollte es funktionieren ... Wahrscheinlichkeiten sind, dass du sie separat gemacht hast –
Dies ist keine Antwort, aber du verpasst einige '.to! String' Aufrufe in deinem toString-Methode. Überall dort, wo Sie 'this.locations [N]' an einen String anhängen wollen, müssen Sie ihn in 'this.locations [N] .to! String' ändern, wenn Sie möchten, dass Typ oder T etwas anderes ist als string, char oder (u) byte – WebFreak001
Meine Befehle waren "dmd -c point.d", dann "dmd main.d" Huh, seltsam. Ich ging davon aus, dass dies wegen der Importaussage nicht nötig wäre. Und dank WebFreak werde ich dafür sorgen. Ich habe es eigentlich geplant, habe es einfach verteilt. Kennen Sie die Importanweisung? –