000
05.02.2006, 18:01 Uhr
~the-norwegian
Gast
|
Falls irgendwo eine leicht zugängliche Lösung existiert, entschuldige ich mich. Ich habe jedoch nichts gefunden (SuFu, Google, andere Foren, eBook).
Das Problem entsteht dadurch, dass ich drei structs benötige, welche durch einen enthaltenen Zeiger auf sich selbst verweisen (A->B->C->A etc). Dabei entsteht das Problem, dass ohne Verwendung von "extern" o.ä. eine der struct-Definitionen am Anfang einen Pointer auf einen noch nicht definierten Datentyp enthält. Die für mich naheliegende Lösung, einen Datentyp mit
zunächst nur zu deklarieren und später zu deklarieren, wird von DevCPP/Mingw mit "`extern' can only be specified for objects and functions" bedacht.
Die Sachen die ich dazu gefunden habe, sind widersprüchlich: zum Teil gibt es Beispiele, in denen von einer zweiten Datei aus mit
| C++: |
extern struct structname
|
auf die structdefinition zurückgegriffen wird (www.inf.fu-berlin.de/lehre/kurse/cplusplus/Lektion2-3.html), andererseits wird ebendas an anderer Stelle für unmöglich erklärt (und über header-Dateien mit der Definition und Objekterzeugung gelöst). Dies stellt meines Wissens für mein Problem keinen Lösungsansatz dar (ganz abgesehen von mir fehlenden Kenntnissen über Objekte).
Ich nehme an, dass es möglich wäre, einen weiteren Zeiger dazwischenzuschalten, bei dem man typechecking umgeht - allerdings wäre das eine Lösung, die weder schön noch im weiteren Gebrauch einfach ist.
Falls dies möglich ist, wäre ich sehr an einer Lösung interessiert, bei der man mit einer Datei auskommt, keine weiteren Pointer benötigt und idealerweise die structs weiterhin mit typedef definieren kann.
Hier einmal der relevante Ausschnitt aus dem bisherigen Code:
| C++: |
extern struct erffachp;
typedef struct { erffachp* einbringung; } structhalbj;
typedef struct { structhalbj halbj[5]; } fachstr; typedef struct { fachstr* fa; } erffachp;
|
Falls noch irgendwelche wichtigen Informationen fehlen, meldet euch bitte. Vielen Dank im Voraus für alle Antworten. |