Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » rekusiver struct

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.02.2006, 17:54 Uhr
BoBtheREapER
kein job für nen BoB


ich programmiere im mom an einem oct_tree in dem ese einen node struct gibt welcher wiederum weitere nodes als child und nachbarn hat.


C++:
typedef deque<float> dynamic_file_store;

typedef vector<float> static_file_store;

typedef struct{
    dynamic_file_store dynamic_store;
    static_file_store  static_store;
    node nb_top, nb_under, nb_left, nb_right, nb_front, nb_back;    //neigbour (nb) nodes
    node child0, child1, child2, child3, child4, child5, child6, child7;
} node;


fehlermeldung: node does not name a type

kann mir bitte jemand dabei helfen?
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2006, 20:06 Uhr
Spacelord
Hoffnungsloser Fall


Mach aus deinen node Objekten Zeiger auf node .Und dann nimm das typedef weg und setzt den Namen der Struktur direkt hinter das Schlüsselwort struct.

Zu dem Zeitpunkt wo du die node Instanzen deklarierst ist dem Compiler die Grösse eines node Objekts noch nicht bekannt.Die Grösse eines Zeigers ist immer gleich.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2006, 09:02 Uhr
(un)wissender
Niveauwart


Oder die Child-Sachen brauchen einen anderen Namen. Der Compiler ist nicht schlau genug, dass obige Beispiel zu compileren. Traurig eigentlich, dass es nicht schwierig ist.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2006, 09:04 Uhr
Pler
Einer von Vielen
(Operator)



Zitat:

Traurig eigentlich, dass es nicht schwierig ist.


Hä?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.02.2006, 09:39 Uhr
(un)wissender
Niveauwart


Na ja, dem Compiler geht es um das Platzproblem für Node. Von Hand kannst du das aber locker lösen, oder nicht? Man braucht nur mehrere Durchläufe.
1. Größe von Node ohne die Childs.
2. Größe von Node ohne die Childs + Größe von Node ohne die Childs * 8

Fertig.
In Echt ist es noch ein wenig komplizierter mit der Anordnung im Speicher, aber so geht es.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.02.2006, 09:47 Uhr
Tommix



Ebenfalls: hä?
Ein node, der ein node enthält, der ein node enthält, der ein node enthält... braucht verdammt viel Speicher, würde ich sagen. Es muß doch
2. Größe von Node ohne die Childs + Größe von Node mit den Childs * 8
sein.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.02.2006, 10:07 Uhr
(un)wissender
Niveauwart


Oh, jetzt auch hier hä?
Hatte, glaube ich, gerade ein anderes Problem im Kopf.
Ihr habt recht, den Speicherbedarf davon zu bestimmen sollte *lange* dauern.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.02.2006, 10:44 Uhr
ao

(Operator)


Also, ich bin nicht sicher, ob das jetzt allen (inklusive OP) klar geworden ist:

Eine Struktur kann niemals sich selber als Member enthalten. Wenn du etwas definierst, was mehrere Nodes hat, kann dieses Etwas nicht selber ein Node sein. Das lässt sich auch nicht austricksen, indem du mehrere Namen für dasselbe Ding einführst oder so.

Das wird auch klar, wenn man sich überlegt, welche Objektbeziehung durch das Memberverhältnis eigentlich ausgedrückt wird. Wenn ein Objekt A ein Member B hat, dann heißt das, A enthält B als Bestandteil, so wie ein Auto einen Motor und vier Räder hat.
Nachbar- und Kind-Beziehungen sind von Natur aus Referenzen auf äußere Objekte und keine Member, so wie die Autos vor und hinter mir im allmorgendlichen Stau keine Teile von meinem Auto sind.

Rekursive Baumstrukturen werden in C++ immer mit Pointern oder Referenzen aufgebaut.

ao

Dieser Post wurde am 20.02.2006 um 10:50 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.02.2006, 17:31 Uhr
BoBtheREapER
kein job für nen BoB


danke funzt jz
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: