Erstellen von Verknüpften Listen in Objective C
typedef struct {
NSString *activty;
NSString *place;
float latitude;
float longitude;
} event;
typedef struct {
event *thing;
Node *next;
} Node;
Dies ist der code, den ich in meinem .h-Datei zu erstellen, die zwei Strukturen zum speichern von Daten (eines für eine Veranstaltungen name/Ort/Lage, und eine für die Knoten eine verkettete Liste. Ich kann die event-struct im struct Knoten, aber ich muss an die Knoten struct in sich selbst. In C++ würde dies funktionieren, aber wie kann ich erreichen, das in objective-c? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum die Mühe mit einem struct? Einfach eine Klasse verwenden:
Gibt es keinen nennenswerten overhead vs. Struktur (wenn die Methode, die Anrufe sind wirklich messbar ist, könnte man auch aussetzen, ivars direkt). Besser noch, der moment, in dem Sie archivieren möchten, der Struktur, hinzufügen von business Logik, oder für sonst etwas Interessantes, können Sie einfach die add-Methoden.
event
struct, bbum ist darauf hinzuweisen, dass eine Klasse wäre die bessere alternative zu einer Standard-C-struct gemäß seiner oben genannten Gründen.Müssen Sie name, Ihre Struktur, wie Sie in C. Zum Beispiel:
Eine bessere Frage, obwohl, ist, warum Sie das machen will " verkettete Liste in den ersten Platz? Warum nicht verwenden Sie eine der container-Typen, die durch den Rahmen?
Ich denke, Sie werden feststellen, dass es nicht funktioniert in C++ (aber Sie könnte sich geändert haben, die Grammatik-Regeln, so dass es tut). Du meinst wohl so etwas wie dieses:
Funktioniert in C++, weil
Node
entsprichtstruct Node
wenn es nicht bereits etwas genanntNode
(dies führt manchmal rätselhaften Fehler beimFoo
ist sowohl Klasse und die Instanz-Methode von einer anderen Klasse, und das passiert in einigen coding-styles).Das Update ist zu sagen
struct Node
. Ich bevorzuge diese; es scheint mehr rein. Es gibt einige gute Gründe, um eine Typdefinition (z.B. Dinge wieTUInt64
was vielleicht historisch gesehen, eine Struktur, die aufgrund fehlender compiler-Unterstützung). Wenn Sie verwenden Sie typedef, gibt es keinen Grund zu geben, dem struct einen anderen Namen, da Sie sich in verschiedenen Namensräumen (IIRC Strukturen sind ein tag "namespace").Den üblichen typedef-version ist so etwas wie dieses:
Alternativ ändern Sie die Dateiendung zu .mm und dann funktioniert es, weil du bist kompilieren Objective-C++!